在使用基于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);
}
}
答案 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一样工作。