Desarrollo de Listas con SimpleAdapter

Continuando con los tutoriales sobre android explicaré como mostrar una lista de elementos compuestos, es decir, dónde en cada fila aparece más de un elemento.

Diseñar formato de fila

Para empezar habrá que diseñar en XML la composición de las filas, en el formato en el que queremos mostrarlas, y guardaremos el resultado en la carpeta «layout», dándole un nombre que luego podamos recordar, en este caso «row.xml». El siguiente código es el utilizado en la aplicación de feria para mostrar la información de los diferentes eventos.

La mayor parte del código forma parte del diseño pero lo realmente importante, como esta señalado, son las id de cada uno de los campos que vamos a rellenar.

Diseño de lista

Ahora es cuando diseñamos la pantalla en la que se mostrará la lista. En el caso de la aplicación de feria, se muestra en la pate superior un menú de navegación, y dos botones en la parte inferior, pero puesto que no son de relevancia para el presente tutorial, no los incluyo en el código de ejemplo.

Lo verdaderamente importante de esta pantalla es el elemento ListView con id «@android:id/list», puesto que el cuadro de texto que aparecería en el caso de que la lista no tuviera elementos no tiene porque estar y del mismo modo tampoco tiene porque ser un cuadro de texto. Si quisiéramos que apareciera una imagen cuando la lista estuviera vacía tan solo habría que poner un elemento «ImageView» y asignarle la id «@id/android:empty».
Alrededor del listado se puede incluir cualquier otro tipo de objeto, y darle a ese listado cualquier propiedad que se quiera, siempre y cuando mantengamos la id del «ListView».

Código de ListActivity

Por último, tan solo queda rellenar la lista desde el código de nuestra actividad. Para ello nos valdremos de la clase «ListActivity» que nos proporcionará unos cuantos métodos bastante útiles para nuestro propósito. Para facilitar la tarea de «copy&paste» del código continúo el tutorial en el mismo:

Eventos del listado

Si queremos que nuestro listado tenga un mínimo de funcionalidad, podemos utilizar los «Listeners» que incluye la clase «ListActivity», esto es, los métodos que se ejecutarán dependiendo del evento ocurrido. Con el siguiente código, que incluiremos en la actividad anterior, iniciaremos otra actividad a la que le pasaremos como información la «id» del elemento pulsado.

Como puede observarse, hacemos uso del Array Global «Eventos» que utilizábamos para rellenar la lista, en el cual almacenamos también la información del «id» sin mostrarla en el listado.

Código Fuente en GitHub

1