识别上下文菜单的listitem的id

JDM*_*JDM 3 android contextmenu listitem

我有一个扩展活动的视图.ListView将显示许多列表项.当用户长时间点击时,我想向他们展示一个上下文菜单,允许他们选择编辑,删除等......然后识别被选为项目的列表项目以执行操作.

在onCreate我有:

listView.setAdapter(adapter);
listView.setOnItemClickListener(onListClick);
listView.setOnItemLongClickListener(onListLongClick);
registerForContextMenu(listView);
Run Code Online (Sandbox Code Playgroud)

我有一个方法onCreateContextMenu

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Context Menu");
    menu.add(0, v.getId(), 0, "Edit");
    menu.add(0, v.getId(), 0, "Delete");

}
Run Code Online (Sandbox Code Playgroud)

以及onContextItemSelected

@Override
public boolean onContextItemSelected(MenuItem item) {

    if (item.getTitle() == "Edit") {
        // edit action
    } else if (item.getTitle() == "Delete") {
        // delete action
    } else {
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里可以获得正确的行/列表项目.

Vam*_*msi 5

您可以使用AdapterContextMenuInfo请参考您提供的代码中的Link-1,

public boolean onContextItemSelected(MenuItem item) {

    if (item.getTitle() == "Edit") {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        editInfo(info.position);
    } else if (item.getTitle() == "Delete") {
        // TODO Delete action
    } else {
        return false;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)