我有两个列表视图,书签列表视图和历史列表视图,一个在另一个之上。当显示历史列表视图时,书签列表视图被隐藏,反之亦然。对于长按事件,我正在创建一个上下文菜单。长点击事件适用于历史列表视图。
现在当我长按书签列表视图中的项目时出现问题,显示历史列表视图上下文菜单而不是书签列表视图上下文菜单。
这怎么可能发生?任何想法?
下面是书签列表视图上下文菜单的代码
public void onCreateContextMenuBookmark(ContextMenu menu, View v, ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Delete Bookmark?");
menu.add(1, 1, 1, "Delete");
menu.add(1, 2, 2, "Cancel");
}
public boolean onContextItemSelectedBookmark(MenuItem item){
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
if(item.getTitle() == "Delete"){
// delete item
}else if(item.getTitle() == "Cancel"){
}
return false;
}
下面是 historylistview 上下文菜单的代码
public void onCreateContextMenuHistory(ContextMenu menu, View v, ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Delete History?");
menu.add(1, 1, 1, "Delete");
menu.add(1, 2, 2, "Cancel");
}
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
if(item.getTitle() == "Delete"){
// delete item
}else if(item.getTitle() == "Cancel"){
}
return false;
}
好的,我发现我可以为两个视图提供一个上下文菜单,就像这样
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
switch(v.getId()){
case R.id.history_listView:
menu.setHeaderTitle("Delete History?");
menu.add(0, v.getId(), 0, "Delete");
menu.add(0, v.getId(), 0, "Cancel");
break;
case R.id.bookmark_listView:
menu.setHeaderTitle("Delete Bookmark?");
menu.add(0, v.getId(), 0, "Delete");
menu.add(0, v.getId(), 0, "Cancel");
}
}
但是如何为每个视图调用两个不同的 onContextItemSelected() 方法?