Android 如何获取已选定ContextItem的ListView?

Android 如何获取已选定ContextItem的ListView?,android,listview,Android,Listview,我有一个有三个ListView的活动,每个都有三个不同的游标,但都有相同的ContextMenu显示/解析代码,当选择事件激发时,我希望让ListView刷新它 我不能使用menuInfo.targetView,因为它为ListView行而不是ListView保留LinearLayout 用这种方法 public boolean onContextItemSelected(MenuItem item) 怎么可能?使用MenuInfo,作为onCreateContextMenu()的第三个参

我有一个有三个ListView的活动,每个都有三个不同的游标,但都有相同的ContextMenu显示/解析代码,当选择事件激发时,我希望让ListView刷新它

我不能使用
menuInfo.targetView
,因为它为ListView行而不是ListView保留LinearLayout

用这种方法

 public boolean onContextItemSelected(MenuItem item) 

怎么可能?

使用MenuInfo,作为onCreateContextMenu()的第三个参数传递。例如,您可以添加对ListView的引用。您可以通过
item.getMenuInfo()
查询它

编辑:抱歉,无法设置菜单信息。
尝试为每个listView创建具有不同GroupID的上下文菜单项,然后可以基于
onMenuItem.getGroupId()

编辑:我错了。多个listView将在同一屏幕上协同工作。由于房地产的原因,可能具有挑战性,但会奏效

您正在将
标签
s/支架附加到
适配器
s中的行
视图
s,对吗?
每个适配器有一个标记类。
现在,

@覆盖
公共布尔值onContextItemSelected(MenuItem项){
AdapterContextMenuInfo信息=(AdapterContextMenuInfo)项
.getMenuInfo();
Class tagClass=info.targetView.getTag().getClass();
if(tagClass==FirstTag.class){
//第一张名单
}else if(tagClass==SecondTag.class){
//第二个
}否则{
抛出新的IllegalArgumentException('我搞砸了这个黑客');
}
//...
}

尝试
menuInfo.targetView.getParent()
-这是列表视图本身。

如何将该列表视图转发给
onContextItemSelected
方法?此答案与问题无关。不要编造OP没有告诉你的东西,事先问问。ListView位于不同的选项卡上,UI是一致的,这也不是我面临的问题。另外,不要忘记Android可以用于电视等机顶盒,在这些机顶盒上,有多个可滚动区域是不同的。如果ListView位于不同的选项卡上,那么您可以确定您位于哪个选项卡上(TabHost.getCurrentTab())现在您将看到要刷新的列表视图。我肯定错了。多重播放列表/网格视图只要不包含在ScrollView中就可以了。这种方法很好而且可用,尽管获取列表视图是最好的方法。我希望有人能回答。
    @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.');
        }
        //...
    }