ExpandableListView中的ContextMenu

时间:2013-04-10 04:49:49

标签: android contextmenu expandablelistview childviews

在我的应用程序中,我使用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 ..请帮助我......

3 个答案:

答案 0 :(得分:3)

使用它为我工作的那个。 将适配器设置为Expandable ListView后,将其写入。

setListAdapter(expListAdapter);
            registerForContextMenu(getExpandableListView());

答案 1 :(得分:2)

您还必须将视图设置为可在适配器的getChildView(...)中长按。

public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    ... 
    convertView.setLongClickable( true);

答案 2 :(得分:1)

只需使用:

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

中的