20 octubre 2010

Ejemplo de Menú de Contexto en Androide

public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, EDIT_ID, 0, "Edit");
menu.add(0, DELETE_ID, 0, "Delete");
}

public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case EDIT_ID:
editNote(info.id);
return true;
case DELETE_ID:
deleteNote(info.id);
return true;
default:
return super.onContextItemSelected(item);
}
}

En el onCreateContextMenu(), no sólo se pasa el ContextMenu al cual añadiremos MenuItems, sino también la Vista que fue seleccionada y un objeto de tipo ContextMenuInfo, que proporciona la información adicional sobre el objeto que fue seleccionado. En este ejemplo, en el onCreateContextMenu() sólo se han añadido dos opciones al menú. En la llamada a onContextItemSelected(), solicitamos el AdapterContextMenuInfo del MenuItem, que proporciona la información sobre el artículo actualmente seleccionado. Todo lo que necesitamos de este el ID para el artículo seleccionado, para editar o eliminar una nota, encontramos el ID con el campo: AdapterContextMenuInfo.info del objeto. Este ID es pasado al editNote() y al deleteNote(), estos métodos se programan con la acción respectiva a tomar.

Finalmente para registrar el Menú de contexto al ListView pasamos la lista entera al método registerForContextMenu(View):

registerForContextMenu(getListView());

Se puede pasar cualquier tipo de objeto declarado en la Vista para registrar el menú de contexto. En este ejemplo getListView() devuelve el objeto de tipo ListView usado en la actividad de la aplicación, como parte de esto, cada artículo de la lista es registrado al menú de contexto.

No hay comentarios: