我有一个扩展 Activity 的 View 。 ListView 将显示多个列表项。当用户长按时,我想向他们展示一个上下文菜单,允许他们选择编辑、删除等...然后识别被选为要执行操作的项目的列表项。
在 onCreate 我有:
listView.setAdapter(adapter);
listView.setOnItemClickListener(onListClick);
listView.setOnItemLongClickListener(onListLongClick);
registerForContextMenu(listView);
我有一个 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");
}
还有 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;
}
我不确定从这里到哪里才能获得正确的行/列表项。
最佳答案
您可以使用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;
}
关于android - 识别上下文菜单的列表项的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2778218/