长按时,我要在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对点击做出反应。

10-08 09:41