长按时,我要在ExpandableList中为每个组都有一个菜单。但是目前,长单击时只有非空组显示蓝色背景,并且可以选择。所有空组都不会对长按做出反应。
我使用registerForContextMenu(list)将列表注册到片段中,并编写了以下代码:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.item_task_long_click_menu, menu);
}
@Override
public boolean onContextItemSelected( android.view.MenuItem item) {
ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()) {
case R.id.itlcm_menu_edit:
//do something
break;
case R.id.itlcm_menu_remove:
//do something
break;
}
return true;
}
在适配器中,我设置了:
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
为什么空白组不能选择?尚未找到更改此方法的方法...
编辑:我想这是
registerForContextMenu(list)
也许没有任何孩子的组没有被注册为长按...。
有人吗
最佳答案
我能够解决。
问题不在于registerForContextMenu()。问题是我的自定义ExpandableListAdapter,在其中我为GroupViews(getGroup(...))使用了两个不同的视图。一个完全不响应任何单击的控件包含一个CheckBox,它覆盖了整个GroupView的焦点。所以我补充说:
android:focusable="false"
到XML和voila中的CheckBox,带有CheckBox的GroupView对点击做出反应。