我试着按照android dev文档中的书来做:

// this didn't create a menu, i don't know why
//registerForContextMenu(getListView());

setListAdapter(new ArrayAdapter<Note>(this, R.layout.selectset_listitem) {
    @Override

    protected View getView(...) {
        ... custom layout ...

        // this creates a menu, but...
        registerForContextMenu(convertView);

        return convertView;
    }
}

onCreateContextMenuonContextItemSelected几乎完全一样。
下面是它在文档(和我的代码)中的外观:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo) {
  super.onCreateContextMenu(menu, v, menuInfo);
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.context_menu, menu);
}

但这部分总是给我一个空信息:
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    ...
}

唯一真正独特的是,我有一个列表项的自定义布局(即两个文本字段和一个图像)。我需要做些什么才能得到为其构建上下文菜单的列表项的索引吗?

最佳答案

您需要在registerForContextMenu()的活动中调用ListView,而不是在适配器的视图项中调用。

08-18 07:43