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()方法里就可以了。
简单来说,我这里分为菜单类型和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()方法里就可以了。
相关文章推荐
- Android通过请求网络数据实现ListView,ListView的优化、图片的缓存、子控件的点击事件。
- android listview 数据删除后没有自动刷新,已删除数据依然显示但是不可点击
- 动态的把数据显示在table中,点击某一行的删除按钮实现该行的删除(通过ajax实现页面的无刷新加载)
- android中通过网络请求数据显示在Listview中,面对许多的item,如何给每个item设置点击事件以跳转到不同的activity
- WPF ListView点击删除某一行并获取绑定数据
- 动态的把数据显示在table中,点击某一行的删除按钮实现该行的删除(通过ajax实现页面的无刷新加载)
- android listView 删除动画 当前Item 删了,但是动画总是从最后一行执行
- Android整理:SQlite数据库的使用以及通过listView显示数据
- HTML,angularJS表格内容排序,点击删除,删除当前,输入内容显示包含内容的数据
- android ListView内数据的动态添加与删除
- ListView 获取数据和删除一行后更新
- Android中ListView通过loadMore按钮或者下拉到底部加载数据
- Android中RecyclerView的item中控件的点击事件添加删除一行、上移下移一行的代码实现
- android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
- Android实现通过浏览器点击链接打开本地应用(APP),并获取到传递的数据
- Android;sql数据库:关于删除数据库数据无法刷新listview并且新listview的修改增加功能出现bug的问题
- ListView点击事件冲突和删除一条数据刷新列表
- Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据(转)
- Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
- android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据