Java Android:ExpandableListView和上下文菜单

Java Android:ExpandableListView和上下文菜单,java,android,Java,Android,我正在使用ExpandableListView编写一个应用程序 我使用BaseExpandableListAdapter的子类向我的ExpandableListView提供数据 然后,我尝试将上下文菜单添加到此视图,但对于可展开列表中的子项组,这些菜单应该不同。因此,在适配器的getChildView和getGroupView中,我调用setOnCreateContextMenuListener如下: TextView textView = new TextView(TestActivity.t

我正在使用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;
TestActivity.this.onCreateChildContextMenu只是在菜单中添加一些字符串

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

谢谢。

我发现了新的: 在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]);
                }
            }
});

我找到了更好的解决方案——使用registerForContextMenu(getExpandableListView());在我的ExpandableListActivity中,通过调用ExpandableListView.getPackedPositionType()检查它是组还是子组。但不管怎么说,我不理解所描述的行为。
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();
        int menuItemIndex = item.getItemId();
    }