您的位置:首页 > 移动开发 > Android开发

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

2012-04-11 15:29 375 查看
在我们实际开发中经常会用到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()方法里就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐