Buenas tardes, en esta entrada vamos a ver una función básica de Android, muy usada, y que veremos muchas veces en muchas de las aplicaciones que usamos en el día a día, el ListView.
Los ListView no son mas que unos elementos que muestran items verticalmente en una lista con scroll, para poder ir moviendonos hacia abajo y ver todos los elementos. Veremos muchas implementaciones de este tipo de elementos en muchas aplicaciones de uso diario, como puede ser la aplicación de Twiter, WhatsApp.
-
Para comenzar vamos a crear un proyecto en Android.
Rellenamos los datos como queramos, al fin y al cabo es una práctica y no hace falta que sea todo muy oficial. Ponemos mínimo el mínimo SDK requerido a la API 8 (Android 2.2), ya que aún queda algún terminal con Android 2.2, y siguen siendo usuarios. Como máximo API podemos poner la 4.1, ya que están abarcando el máximo mercado dentro de Android.
En la siguiente pantalla elegiremos crear una Activity, he desmarcado la opción de crear un icono.
En la pantalla siguiente, he elegido Blank Activity, no vamos a necesitar ninguna característica especial de las otras plantillas.
En esta pantalla elegimos el nombre de la Actividad, lo que nos creará también el nombre del layout de la actividad nueva.
-
Con esto ya tendremos nuestra Activity creada. Ahora nos iremos al XML y añadiremos el ListView de esta manera, quedando el xml así:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".EjemploListView" > <ListView android:id="@+id/listview" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout>
Con esto, si vamos a la parte gráfica del xml podremos ver ya algo así:
-
A continuación nos dirigimos a nuestro archivo java, ubicado en src/nombre_paquete/EjemploListView.java (en mi caso). Vamos a comenzar declarando el ListView y un array de String con unos elementos ya predefinidos, que serán los que usaremos para rellenar el ListView.
public class EjemploListView extends Activity { private ListView list; private String[] sistemas = {"Ubuntu", "Android", "iOS", "Windows", "Mac OSX", "Google Chrome OS", "Debian", "Mandriva", "Solaris", "Unix"};
-
Ahora nos meteremos dentro del método onCreate, para poder inicializar la lista, crear un Adapter, que es una clase la cual usaremos para rellenar el ListView y agregaremos alguna funcionalidad más al ListView.
Para “enlazar” el ListView del xml con la variable de instancia que hemos creado, haremos lo siguiente:
list = (ListView)findViewById(R.id.listview);
Como vemos, usamos el método findViewById para buscar el id que le dimos al ListView en el xml.
A continuación, vamos a declarar el Adapter. Esta clase será la encargada de adaptar el Array que tenemos a un ListView. En este caso, el adapter será solo de ya que nuestro array solo contiene elementos de tipo String.
ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, sistemas);
Vamos a analizar bien el ArrayAdapter. Como bien indica el nombre de la clase, es un adaptador de arrays, y en este caso de tipo String.
En su constructor, pasamos como argumentos los siguientes elementos:
- Context: Pasamos el Context de la aplicación, mediante el uso de this.
- android.R.layout.simple_list_item_1: Esto es el tipo de ListView, en nuestro caso, solo muestra un elemento, por lo tanto usaremos para cada dato un contenedor con un solo elemento.
- sistemas: Le pasamos el array con los SO que hemos declarado como variable de instancia que está ubicado debajo del nombre de la clase.
-
Por último estableceremos el objeto adapter de la clase ArrayAdapter al ListView que hemos declarado, lo que hará que cargue los datos en el y ya podamos verlo en funcionamiento.
list.setAdapter(adaptador);
Como vemos es un proceso simple, en una sola línea.
-
Por último, vamos a agregar un listener a la lista, en este caso un onItemClickListener, que producirá un aviso mediante un objeto Toast con el número del elemento pulsado cuando pulsemos sobre la ListView. Esto podemos hacerlo de la siguiente manera.
list.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "Ha pulsado el item " + position, Toast.LENGTH_SHORT).show(); } });
En el método generado, se pasan una serie de parámetros (esto se origina solo si usamos Eclipse). En este caso el que mas nos importa es el parámetro cuyo tipo de dato es int, al cual le he cambiado el nombre para que veamos bien a que se refiere.
A continuación, creamos un Toast, el cual mostrará un aviso que nos devolverá el elemento que hemos pulsado.
Una vez hecho todo esto, podemos lanzar nuestra aplicación, y ver como ha quedado todo, a continuación pongo unas imágenes de como me ha quedado a mí y un pequeño video para verlo en acción:
Aquí el vídeo
Sin más, esto es todo, y es un elemento muy importante en Android, muy usado y que se puede personalizar muchísimo, lo cual veremos mas adelante con otros tutoriales.
Como siempre cualquier aporte o corrección es bienvenido, saludos!!!
Pingback: Cargar ListView con AsyncTask en Android « SekthDroid()