有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:ExpandableListView和上下文菜单

我正在使用ExpandableListView编写一个应用程序
我使用BaseExpandableListAdapter的子类向我的ExpandableListView提供数据

然后,我尝试将上下文菜单添加到此视图,但对于可展开列表中的子项组,这些菜单应该不同。因此,在适配器的getChildViewgetGroupView中,我调用setOnCreateContextMenuListener如下:

TextView textView = new TextView(TestActivity.this);;
textView.setText(getChild(groupPosition, childPosition).toString());      
textView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
      @Override
      public void onCreateContextMenu(ContextMenu menu, View v,
                                      ContextMenu.ContextMenuInfo menuInfo) {
        TestActivity.this.onCreateChildContextMenu(menu, v, menuInfo);
      }
    });
return textView;

测试性。这onCreateChildContextMenu只需在菜单中添加一些字符串

问题:
这工作得很好-上下文菜单出现并按预期工作,但组项无法再展开。它只是忽略了短点击。我已经检查了-正如预期的那样,文本视图在这一行之后变为isLongClickable(),但它仍然不可isClickable()-因此我看不出上下文菜单回调如何影响短点击功能
我已经为自己解决了这个问题,在整个ExpandableListView中添加了这个监听器,然后修补了儿童菜单。但它看起来很丑。我错过什么了吗

谢谢


共 (1) 个答案

  1. # 1 楼答案

    我发现了新的: 在getChildView中:

    convertView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
    
                @Override
                public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
                    String menuItems[];
                    menuItems = getResources().getStringArray(R.array.contextmenu);
                    menu.setHeaderTitle(getResources().getString(R.string.sms_select));
                    for (int i = 0; i<menuItems.length; i++) {
                    menu.add(Menu.NONE, i, i, menuItems[i]);
                    }
                }
    });
    

    以及:

        @Override
        public boolean onContextItemSelected(MenuItem item) {
            ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();
            int menuItemIndex = item.getItemId();
        }