我有一个包含三个listview的活动,每个都有三个不同的游标,但都有相同的ContextMenu显示/解析代码,当选择事件触发时,我想让ListView刷新它。
我无法使用menuInfo.targetView
,因为它包含ListView行的LinearLayout,而不是ListView。
在这个方法中
public boolean onContextItemSelected(MenuItem item)
怎么可能?
答案 0 :(得分:1)
使用MenuInfo,作为onCreateContextMenu()
的第三个参数传递。例如,您可以添加对ListView的引用。您可以按item.getMenuInfo()
进行查询。
编辑:抱歉,没有办法设置MenuInfo。
尝试为每个listView创建具有不同groupID的上下文菜单项,然后您可以基于onMenuItem.getGroupId()
进行切换。
答案 1 :(得分:1)
您要将Tag
s /持有人附加到View
s中的行Adapter
,对吗?
每个适配器都有一个Tag类
现在,
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
Class<?> tagClass = info.targetView.getTag().getClass();
if(tagClass == FirstTag.class){
// the first list
} else if(tagClass == SecondTag.class){
// the second one
} else {
throw new IllegalArgumentException('I've screwed up this hack.');
}
//...
}
答案 2 :(得分:0)
尝试menuInfo.targetView.getParent()
- 这是ListView本身。
答案 3 :(得分:-1)