Menu contextual

Desarrollo de Aplicaciones Móviles en Android”
Ejercicio Básico D: Creación de opciones en el Menú contextual de un ListActivity
A. Descripción
El ejercicio consistirá en crear dos opciones en el menú contextual de la lista de una aplicación de Android, las cuales nos permitan añadir y eliminar elementos de la lista. Al realizar una pulsación larga sobre un elemento de la lista, podremos eliminar dicho elemento,
o insertar a continuación de dicho elemento.

Los menús contextuales son aquellos menús que aparecen dependiendo del contexto
que tengas en la aplicación. Por ejemplo, vamos a ver un caso donde podemos mostrar un menú contextual cuando se realiza una pulsación prolongada sobre un ítem de una lista.
B. Descripción


Para mostrar un menú contextual lo primero que tendremos que hacer es registrar el
propio menú en la vista, para que se pueda utilizar. Así, en el método onCreate(), insertamos el siguiente código, donde el ListView será sobre el que queremos utilizar el menú contextual.

registerForContextMenu(ListView);


Para     crear      el      menú     contextual,      debemos      sobreescribir      el      método onCreateContextMenu(), y añadir  las opciones  posibles  al menú  mediante  el  método add().   para  obtener   la  opción   sobre  la  que  se  seleccionó utilizamos  el  método onContextItemSelected(), obteniendo el ID de la opción seleccionada.


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

La ejecución del ejercicio debería quedar de la siguiente manera:

C.  Pasos a seguir



1 Cargar el código del proyecto Ejercicio Basico D - Menus contextuales  –> Inicio


2 Registrar    el    menú    contextual     en    el    ListView de    la    ListActivity.
NOTA: getListView().


3 Crear las constantes identificadoras de las opciones del me contextual (Menu_ADD,
MENU_DEL).


4 Sobreescribir el método onCreateContextMenu(), y añadir las opciones posibles al me mediante el método add().

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
menu.add (Menu.NONE, MENU_ADD, Menu.NONE, "Añadir elemento");
.. .. ..
}

5 Sobreescribir  el  método  onContextItemSelected(), y obtener  el  Adapter para  conseguir   la  posicn  seleccionada  a  continuación   realizar  las  opciones adecuadas para eliminar el elemento seleccionado.

public boolean onContextItemSelected(MenuItem  item) { AdapterContextMenuInfo info =
(AdapterContextMenuInfo) item.getMenuInfo();

switch (item.getItemId()) {
case MENU_ADD:
return true;
case MENU_DEL:
//info.position tiene la posición
return true;
}
return super.onContextItemSelected(item);
}


6 Para insertar a continuación  del elemento  seleccionado,  debemos tener  una variable global donde guardar dicha posición una vez seleccionada, y que el diálogo inserte el elemento nuevo en la siguiente  posición.  A, debemos modificar la insercn add() que teníamos en el método onCreateDialog().