1

嘿伙计们,我正在查看 Android 市场上的“Diaro”和“我的日记”应用程序。这些项目显示在列表视图中,长按一个项目,一个带有各种选项(如编辑、删除等)的上下文菜单打开。我尝试在我的应用程序中实现相同的功能,这有些相似。但问题在于onContextItemSelected(MenuItem item)我无法获得点击的项目的内容。这是代码onContextItemSelected(MenuItem item)

@Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
    switch (item.getItemId()) {
    case R.id.edit:


        break;v

          // rest of the codetion
    }

    return super.onContextItemSelected(item);
}

有人可以告诉我如何从这个函数中获取在列表视图上单击的项目的 ID 吗?我真的可以在这里使用一些帮助:)

4

2 回答 2

3

您必须为 contextMenu 注册 yourView,如下所示:

list = getListView();
registerForContextMenu(list);

你必须使用 onCreateContextMenu 来构建它

@Override
public void onCreateContextMenu(ContextMenu contextMenu,
                                View v,
                                ContextMenu.ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info =
            (AdapterView.AdapterContextMenuInfo) menuInfo;
    selectedWord = ((TextView) info.targetView).getText().toString();
    selectedWordId = info.id;

    contextMenu.setHeaderTitle(selectedWord);
    contextMenu.add(0, CONTEXT_MENU_EDIT_ITEM, 0, R.string.edit);
    contextMenu.add(0, CONTEXT_MENU_DELETE_ITEM, 1, R.string.delete);
}

您的 contextMenu 标题中有 listView 项目,它的 id 在 selectedWordId 中

有关更多信息,请参阅此链接:Detecting which selected item (in a ListView) spawned the ContextMenu (Android)

于 2012-05-30T18:32:53.083 回答
0

我有一段时间遇到同样的问题,发现我的活动中有 onMenuitemselected() 并且这是在听上下文菜单项而不是在 contextitemselected() 上,希望这会有所帮助。

于 2015-08-23T16:55:54.550 回答