1

嗨 frnds 在我的应用程序中,我使用 expandableListView。我需要为可扩展的 listView 集成一个 contextMenu。在我的可扩展 ListView 中,我为不同的孩子膨胀了不同的布局。因此,当我长按每个 childView 时,我需要执行不同的操作。

这里我给出了 ContextMenu 的代码。

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    ExpandableListView.ExpandableListContextMenuInfo info=
            (ExpandableListView.ExpandableListContextMenuInfo)menuInfo;
    int type=ExpandableListView.getPackedPositionType(info.packedPosition);
    Log.e("type",""+type);
    menu.setHeaderTitle("Options");
    menu.add(1, 1, 1, "Edit");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
    ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo)item.getMenuInfo();

    if(item.getItemId()==1)
    {
        Log.e("clickd","menu");
    }
    return super.onContextItemSelected(item);
}

并在我的 onCreate() 中注册 listView forContextMenu。

registerForContextMenu(expListView);

但是当我按下 GroupView 时,它会显示 contextMenu。但是当我单击 childView 时,它没有显示 ContextMenu .. 请帮助我.....

4

3 回答 3

3

使用它对我有用的这个。将您的适配器设置为 Expandable ListView 后编写它。

setListAdapter(expListAdapter);
            registerForContextMenu(getExpandableListView());
于 2013-04-10T05:41:36.210 回答
2

您还必须将视图设置为可在getChildView(...)适配器中长时间单击。

public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    ... 
    convertView.setLongClickable( true);
于 2015-06-21T11:55:46.847 回答
1

只需使用:

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    return true;
}

在您的 ExpandableListViewAdapter

于 2015-01-27T20:19:23.963 回答