【发布时间】:2013-09-28 16:42:41
【问题描述】:
您好,我从 ContextMenu 获取 ExpandableListView 项目的 id 时遇到问题,我需要从我的数据库中删除该条目(我正在使用内容提供程序)。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.add(Menu.NONE, MENU_EDIT, Menu.NONE, "Edit");
menu.add(Menu.NONE, MENU_REMOVE, Menu.NONE, "Remove");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuItem.getMenuInfo();
switch (item.getItemId()) {
case MENU_EDIT:
editEntry(info.id);
return true;
case MENU_REMOVE:
deleteEntry(info.id);
return true;
default:
return super.onContextItemSelected(item);
}
}
private void deleteEntry(long id) {
Uri uri = Uri.parse(DatabaseManager.CONTENT_URI + "/" + id);
getActivity().getContentResolver().delete(uri, null, null);
}
ContextMenu 正在显示,但是当我单击“删除”时没有任何反应。你能告诉我该怎么做吗?
【问题讨论】:
-
您没有看到从
ListView或/和提供程序中删除的项目?当您触发delete()时,您是否跟踪过您的提供程序中发生的情况?您可能还想发布您的提供者的删除方法。 -
它在 ListView 上运行良好
-
哦,我忘了在我的适配器上调用 notifydatasetchanged - 该项目确实被删除了,但是......它不是我点击的项目。当我尝试从组中删除最后一项时,它会从组中删除第一项。为什么?
标签: android contextmenu expandablelistview