Android中ListView通过ContextMenu删除当前点击的一行数据

来源:互联网 发布:马特达蒙电影知乎 编辑:程序博客网 时间:2024/05/21 11:06

在我们实际开发中经常会用到listview组件,对listview里面的没一个item添加内容,内容的来源无非就是本地数组或者数据库,通过适配器先是到listview中。当我们需要对listview里面的数据进行动态增加和删除时,就需要费一番工夫了。

简单来说,我这里分为菜单类型和item控件类型。菜单类型时长按listview的item会弹出一个contextMenu,然后我们可以选择删除菜单删除这个item里面的内容。而setOnCreateContextMenuListener(this)这个方法是吧上下文菜单添加给这个listview,所以当我们长按这个listview是会出现这个菜单,但是我们怎么知道用户实际长按的是listview中的哪一行数据了,这里我们用到了AdapterContextMenuInfo,这个类可以帮助我们定位用户实际按的是那条数据。


@Override
    public boolean onContextItemSelected(MenuItem item) {
     final AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
     final int id = (int) info.id;
     
     if (-1 == id) {
      super.onContextItemSelected(item);

     }
     
     switch (item.getItemId()) {
     case DELETE:
      mItems.remove(id);
      mAdapter.notifyDataSetChanged();
      break;
     case ADD:
      break;
     }
     return super.onContextItemSelected(item);
    }





listview的更新可以在点击删除后采用message的方式发送给handler,通知Handle进行更新。


                       case 2:
webSite.remove(id);
Message message = new Message();
message.what = ITEM_REFRESH;
mHandler.sendMessage(message);
break;

如果listview中的每一项item中有比如删除等组件式,对其的处理放在适配器的getView()方法里就可以了。

原创粉丝点击