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