Usuario:ManuelRomero/Android/ComponentesAplicacion/Activity/ListActivity

De WikiEducator
Saltar a: navegación, buscar



ListActivity

  • En Android es muy común que en un momento dado una aplicación me muestre una lista de elementos de los cuales voy a seleccionar uno (lista de contactos, lista de libros, ...)
  • Una vez seleccionado el elemento realizaremos la operación correspondiente como puede ser en los casos anteriores ver el detalle de ese contacto o de ese libro .

Para este tipo de tan comunes operaciones, Android nos ofrece una clase especializada llamada ListActivity

  • Es una clase que extiende de Activity y está especializada en trabajar con listas de objetos, como veremos a continuación.

ClaseListActivity.png

Dos ideas importantes sobre la clase ListActivity.
  1. ListActivity muestra una lista de objetos cuyos valores se toman de algún origen de datos como una matriz o un cursor,
  2. ListActivity nos ofreace los controles de eventos cuando el usuario selecciona un elemento de dicha lista.
onListItemClick(...)
[void onListItemClick (ListView l, View v, int position, long id)]

Poniendo el layout

  • Ahora queremos cargar el layout con nuestros objetos en nuestra aplicación que va a ser una ListActivity
  • Primero necesitaremos tener nuestros valores
  • En nuestro caso vamos a usar el origen de datos de un array que definimos como una atributo en nuestra clase
  • De momento vamos a usar 5 aplicaciones por lo que daremos 5 valores.
//...
 String aplicaciones[]={"CicloVida","Dialog","Intent","SingleTouch","MultiTouch"};
//...

Ahora queremos cargar estos valores cada elemento del array como un view en el layout de nuestra aplicación y que aparezcan en una lista. Para ello vamos a usar un objeto de la clase ListView.

ListView
Un ListView es un objeto que representa una lista de view con un scrooll vertical asociado que nos permite desplazarnos horizontalmente entre los diferentes view.
  • Para añadir el ListView vamos a nuestro fichero xml del layout y lo añadimos
    • bien directamente en el fichero xml
   <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true" >
    </ListView>
o usando el diseñador gráfico y arrastrándolo con el ratón

ListView.png

  • Ahora lo único que nos queda es asociar la lista de valores del array, al ListView, para ello necesitamos adaptar cada valor de nuestro origen de datos a cada fila de nuestro ListView.
  • Para este cometido necesitamos un objeto que implemente la interfaz Adapter. Adapter es una interfaz implementada por las clases que podemos ver en la imagen siguiente.
  • Observar en la imagen, las clases en las que su recuadro es son puntitos son interfaces, las que están en discontinuo puntos y rayas son clases abstractas, las que tienen la lína continua son implementaciones completas (clases normales que implementan las interfaces o métodos abstractos de las que derivan).

ClaseAdapter.png

  • Por lo tanto deberemos definir para nuestro caso un ArrayAdapter


En nuestro caso usaremos un ArrayAdapter, pues nuestro origen de valores es un array. <>


los valr

  • Para colocar el Layout en nuestra Activity deberemos de poner una lista de view, cada uno de los cuales corresponda a cada elemento de la lista.
  • La lista de elementos hemos comentado que la podemos sacar de un array por ejemplo o una consulta en una base de datos.
  • En esta clase tiene un layout por defecto, aunque lo podemos personalizar. Podemos adaptar la lista de valores al layout por defecto, haciendo que cada elemento de la lista sea un view en nuestro layout o pantalla.

Para ello usaremos un objeto de la clase ListView.

  • Si usamos el layout por defecto no debemos cargar en el

La propia clase implementa un layout contenedor que contiene un ListView, por lo que no necesitamos declararlo, ni asociar la actividad con ningún layout. (MRM ?)