我有ListAdapter
,用于显示Listview
中的列表。现在我添加了一个longpress菜单操作来删除任何选定的项目。
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
final Long wordId = menuInfo.id;
// selected_row = menuInfo.position;
// To get the id of the clicked item in the list use menuInfo.id
switch (item.getItemId()) {
case CONTEXT_DELETE:
deleteRes(wordId); // delete function for the item
break;
default:
return super.onContextItemSelected(item);
}
//((BaseAdapter) favAdapter).notifyDataSetChanged();
return true;
}
但删除后,列表正在更新并显示包含已删除项目的旧列表。我尝试使用notifyDataSetChanged()
,但它无效。问题的解决方案是什么?
答案 0 :(得分:1)
我使用了以下代码,问题解决了。
favCursor = wordDataHelper.getCursorFav();
((SimpleCursorAdapter) favAdapter).changeCursor(favCursor);
答案 1 :(得分:0)
从数组/列表中删除项目,之后将数组/列表分配给适配器,然后写入notifyDataSetChanged()。
答案 2 :(得分:0)
从列表中删除项目后,您必须通过对数据库执行新查询来获取新的Cursor。然后,您可以通过使用新光标作为参数调用CursorAdapter来更改SimpleCursorAdapter(changeCursor())的光标。
答案 3 :(得分:0)
删除后使用getListView()。invalidateViews。
答案 4 :(得分:0)
adapter.getCursor().requery()
adapter.notifyDatasetChanged
答案 5 :(得分:0)
尝试使用notifyDataSetChanged方法,它应该可以工作。
adapter.notifyDataSetChanged();
但是,有时会失败。如果它失败了,那么使用新的列表元素重新初始化adepter。它对我有用。
adapter = new ArrayAdapter<Item>(getApplicationContext(),android.R.layout.simple_list_item_1, itemList);
setListAdapter(adapter);