如何实现自定义ListViews的上下文菜单?

时间:2011-03-15 01:59:42

标签: android listview contextmenu

在使用基于BaseAdapter的自定义ListView时,如何为上下文菜单注册ListView?

我尝试了registerForContextMenu(getListView());,但这似乎不起作用。我正在使用API​​ Demos的ListView14.java。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setListAdapter(new EfficientAdapter(this));
    registerForContextMenu(getListView());
}




@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo) {
  super.onCreateContextMenu(menu, v, menuInfo);
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.tag_context_menu, menu);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
  AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
  switch (item.getItemId()) {
  case R.id.tagView:
  //  editNote(info.id);
    return true;
  case R.id.tagRename:
   // deleteNote(info.id);
    return true;
  case R.id.tagDelete:
       // deleteNote(info.id);
        return true;
  default:
    return super.onContextItemSelected(item);
  }
}

1 个答案:

答案 0 :(得分:1)

尝试在onCreate中命名列表视图并使用该引用,而不是使用registerForContextMenu(getListView())

Listview myListView = (Listview) findViewById(R.id.myListView); //or use any other constructor
registerForContextMenu(myListView);

这适用于我的适配器馈送Gridview中的所有项目(虽然结果是不可能然后正确地向gridview本身添加一个contextmenu,它在空gridview项目上注册longclicks,但这是另一个故事:)) ,我想像Listview一样工作。