studio - ¿Cómo implementa el menú contextual en una ListActivity en Android?
registerforcontextmenu (3)
¿Cómo implementa un menú contextual activado por un clic largo o toca en una actividad de lista que está usando los diseños integrados y un ListAdapter?
En el método onCreate, llame a registerForContextMenu siguiente manera:
registerForContextMenu(getListView());
y luego rellene el menú en onCreateContextMenu (Menú ContextMenu, Ver vista, ContextMenuInfo menuInfo) . El argumento de menúInformación puede proporcionar información acerca de qué elemento se hizo clic de esta manera:
AdapterView.AdapterContextMenuInfo info;
try {
info = (AdapterView.AdapterContextMenuInfo) menuInfo;
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return;
}
long id = getListAdapter().getItemId(info.position);
y agrega elementos de menú de la manera habitual llamando al menu.add :
menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);
y cuando el usuario elige una opción, se llama a onContextItemSelected . También onMenuItemSelected y este hecho no se explica explícitamente en la documentación, excepto para decir que utiliza el otro método para recibir llamadas desde el menú contextual; solo ten en cuenta que no compartas identificadores.
En onContextItemSelected puede obtener el MenuInfo y, por lo tanto, el id del elemento seleccionado llamando a getMenuInfo() :
try {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return false;
}
long id = getListAdapter().getItemId(info.position);
También debería consultar Activity.registerForContextMenu(View) .
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;
}