Как вы реализуете контекстное меню, вызванное длинным щелчком, или нажмите на ListActivity, который использует встроенные макеты и ListAdapter?
Как реализовать контекстное меню в ListActivity на Android?
Ответ 1
В методе onCreate вызовите registerForContextMenu следующим образом:
registerForContextMenu(getListView());
а затем заполнить меню onCreateContextMenu (меню ContextMenu, представление вида, контекстное меню).. Аргумент menuInfo может предоставить информацию о том, какой элемент был долго нажат следующим образом:
AdapterView.AdapterContextMenuInfo info;
try {
info = (AdapterView.AdapterContextMenuInfo) menuInfo;
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return;
}
long id = getListAdapter().getItemId(info.position);
и вы добавляете пункты меню обычным способом, вызывая menu.add:
menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);
и когда пользователь выбирает опцию, вызывается onContextItemSelected. Также onMenuItemSelected, и этот факт явно не описан в документации, кроме как сказать, что вы используете другой метод для приема вызовов из контекстного меню; просто имейте в виду, не разделяйте идентификаторы.
В onContextItemSelected вы можете получить опцию MenuInfo и, таким образом, идентификатор элемента, выбранного по вызову getMenuInfo():
try {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return false;
}
long id = getListAdapter().getItemId(info.position);
Ответ 2
Вы также должны посмотреть Activity.registerForContextMenu(Просмотр).
Ответ 3
listView = (ListView) findViewById(R.id.listpockets);
registerForContextMenu(listView);
public void onCreateContextMenu(android.view.ContextMenu menu, View v, android.view.ContextMenu.ContextMenuInfo menuInfo) {
//AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle(getString(R.string.titleDelete));
menu.add(0, CommonUtil.CONTEXT_MENU__DELETE_ID, 0, getString(R.string.menuDelete));
};
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getItemId() == CommonUtil.CONTEXT_MENU__DELETE_ID)
{
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
long id = this.listView.getItemIdAtPosition(info.position);
Log.d(TAG, "Item ID at POSITION:"+id);
}
else
{
return false;
}
return true;
}