tutorial studio registerforcontextmenu dinamico contextual android user-interface long-click

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);



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; }