按下(删除)按下时删除ListView行

时间:2014-05-03 23:23:50

标签: android android-listview onclick android-arrayadapter

目前我使用ArrayAdapter创建了许多ListView项目行。在每个行中都有一个按钮来删除"任务"。我可以从数据库中删除任务,但我不知道如何查找视图项并实际删除它,以便用户看到它被删除。任何帮助?以下是我的getView。 (感谢您的任何建议!)

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    final DataManager dm = new DataManager(getContext());
    Task task = objects.get(position);

    LayoutInflater inflater = 
            (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.item_task, null);

    // Get Text Views
    TextView tv_title = (TextView) view.findViewById(R.id.task_title);
    TextView tv_item = (TextView) view.findViewById(R.id.task_item);
    ImageView iv_delete = (ImageView) view.findViewById(R.id.task_delete_image);

    tv_title.setText(task.getTitle());
    tv_item.setText(task.getItem());
    iv_delete.setTag(task.getId());

    iv_delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String tag_del = (String) v.getTag();
            dm.deleteItem(tag_del);
        }
    });

    return view;
}

3 个答案:

答案 0 :(得分:1)

您必须从数组中移除项目或(您用于填充活动中列表的任何集合),然后在适配器上调用notifyDataSetChanged();以更新列表

e.g。

如果您使用ArrayList<String> list来定义

 final ArrayAdapter adapter = new ArrayAdapter(this,
        android.R.layout.simple_list_item_1, list);
    listview.setAdapter(adapter);

致电

list.remove(3);
adapter.notifyDataSetChanged();`

ListView的第4行将被删除

答案 1 :(得分:0)

修复是,在onclick所在的适配器中,在onclick中添加以下内容:

objects.remove(position);
notifyDataSetChanged();

答案 2 :(得分:0)

 iv_delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            remove(task);
            notifyDataSetChanged();

        }
    });

试试这个我在我的项目中这样做