如何确定选择了哪个ListView是ContextItem?

时间:2010-05-18 12:47:11

标签: android listview

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

我无法使用menuInfo.targetView,因为它包含ListView行的LinearLayout,而不是ListView。

在这个方法中

 public boolean onContextItemSelected(MenuItem item) 

怎么可能?

4 个答案:

答案 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)

编辑:我错了。几个ListView将在同一个屏幕上一起工作。可能因房地产而具有挑战性但会起作用。