¿Cómo se implementa un menú contextual desencadenado por un clic largo o toca en una actividad de lista que está utilizando los diseños integrados y un ListAdapter?¿Cómo se implementa el menú contextual en ListActivity en Android?
Respuesta
En la llamada al método onCreate registerForContextMenu así:
registerForContextMenu(getListView());
y luego pueblan el menú de onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo). El argumento menuInfo puede proporcionar información sobre lo que se ha hecho clic largo artículo 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 añadir elementos de menú en la forma usual llamar menu.add:
menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);
y cuando el usuario elige una opción , Se llama 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 ponerme en contacto con el MenuInfo y por lo tanto la identificación del elemento seleccionado llamando getMenuInfo():
try {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return false;
}
long id = getListAdapter().getItemId(info.position);
Ahh, gracias. He estado buscando eso en toda la Web, pero solo pude encontrar la versión anterior. Este funciona perfecto con cupcake. –
Sé que el código de protección ClassCastException aparece en la muestra de Google, pero creo que probablemente sea innecesario. No es probable que el MenuInfo sea a veces un AdapterContextMenuInfo, probablemente siempre o nunca. La cláusula de guardia evita que la aplicación se cuelgue, pero de todos modos tienes un error lógico. Personalmente preferiría ver toda la pila, pero esa es solo mi preferencia. –
@Daniel Yankowsky: si usa 'registerForContextMenu' solo una vez: sí. Pero con un diseño de actividad de lista personalizada, es posible que tenga otros elementos para registrarse también. Pero entonces: ¿No sería mejor usar 'instanceof' y verificar lo que obtuviste? - Ahh, bueno, nunca he visto un buen código de demostración. – Martin
Usted también debe mirar a 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;
}
- 1. Menú contextual en Android WebView
- 2. Deshabilitar el menú contextual en pulsaciones largas en Android
- 3. ¿Cómo modificar el menú contextual en CKEditor?
- 4. Agregar método en Android Copiar/Pegar el menú contextual global?
- 5. Cómo agregar menú contextual al menú contextual de NSOutlineView (
- 6. Android: Cómo encontrar la posición presionada desde el menú contextual
- 7. cómo llamar menú contextual
- 8. Diferencia entre el menú contextual y el menú de opciones en Android
- 9. Eliminar el menú contextual en TinyMCE
- 10. Menú contextual por clic corto
- 11. ListView personalizado y menú contextual. ¿Cómo conseguirlo?
- 12. Editar menú contextual en el navegador
- 13. Desactivar el menú contextual en cromo
- 14. Anulación de los colores del menú contextual en Android
- 15. Tortoise SVN: cómo cambiar el menú contextual?
- 16. Menú contextual de TabControl
- 17. PyQt y menú contextual
- 18. Falta la opción "compilar" en el menú contextual de Eclipse
- 19. ¿Cómo volver a habilitar el menú contextual en este caso?
- 20. menú contextual principal?
- 21. Android: ¿Cómo establecer un título de menú contextual generado?
- 22. Deshabilitar el menú contextual en el control de Internet Explorer
- 23. No mostrar el menú contextual si no se selecciona nada
- 24. menú contextual para eliminar elementos en listview
- 25. visibleCuando aparece el comando en el menú contextual
- 26. cómo deshabilitar el menú contextual para determinados elementos ListView en Android
- 27. FLOSS que implementa insignias y menú contextual en Snow Leopard's Finder
- 28. Listener androide despedir menú contextual
- 29. menú contextual jquery desactivar elementos de menú
- 30. Solicitar en el menú contextual del Explorador de Windows
Su edición ha cambiado completamente la pregunta. Probablemente hubiera sido mejor simplemente hacer la pregunta diferente. –