Interfaz de usuario en Apps Android: controles de selección (I)
En este tutorial vamos a centrarnos en los componentes de tipo selección que podemos encontrar en el SDK de Android, como ListView, GridView, ExpandableListView y SlidingDrawer, y posteriormente implementaremos un ejemplo usando los componentes ListView y GridView para acceder a una base de datos creada con SugarORM.
Interfaz de Usuario
En primer lugar, será necesario aclarar una serie de conceptos que se utilizarán a lo largo de este tutorial, que nos permitirán entender de una manera más amplia los diferentes componentes que intervienen en una aplicación Android, desde su funcionamiento más básico hasta controles más complejos.

Declarar los elementos de interfaz de usuario en XML:
1 2 3 4 5 6 |
<TextView android:id="@+id/txtProductoSeleccionado" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Registro Vacío" android:textAppearance="?android:attr/textAppearanceLarge" /> |
Instanciar los elementos del Layout en tiempo de ejecución:
1 |
TextView productoSeleccionado = new TextView(this); |
Alguno de los Layout más usados en la plataforma Android:
- LinearLayout: Dispone los elementos en una fila o en una columna.
- TableLayout: Distribuye los elementos de forma tabular.
- RelativeLayout: Dispone los elementos en relación a otro o al padre.
- AbsoluteLayout: Posiciona los elementos de forma absoluta.
- FrameLayout: Permite el cambio dinámico de los elementos que contiene.
Controles de selección
Una vez se han aclarado ciertos aspectos generales de una aplicación Android, vamos a profundizar en los componentes que se pueden definir en un Layout:
- Definir un Layout que contenga el ListView. En nuestro caso (ejemplo resuelto al final del tutorial) se ha definido en un RelativeLayout, un LinearLayout donde se declaran un TextView, un ListView (el id deberá ser “@android:id/nombrelistview“) y un ImageView.
- Crear un Layout auxiliar, que se repetirá en cada una de las líneas del ListView (Contenedor de Vistas). Se declaran dos TextView que se encargarán de mostrar la información que se tiene almacenada en cada línea del ListView:
- Se crea una Activity que mostrará el Layout donde se ha definido el componente ListView (esta Activity debe heredar de ListActivty).
- Se crea un Adaptador para la lista que se ha definido. Este adaptador hereda de la clase BaseAdapter y debe implementar los siguientes métodos:
- MiAdaptadorGridView(Activity actividad, List<Articulos> articulos) : Constructor que recibe el contexto en el que se va a crear y la lista de elementos que se van a poder ver en el componente ListView.
- int getCount() : Devuelve el número de elementos de la lista.
- Object getItem(int position ): Devuelve un elemento de una determinada posición de la lista.
- long getItemId(int position) : Devuelve el identificador de una fila a partir de su posición.
- View getView(final int position, View convertview, ViewGroup parent) : Método que se encargará de construir un nuevo objeto View con el layout creado a partir de esta nueva Activity, mostrando en cada una de las líneas del ListView esta nueva vista.
- static class ViewHolder : Clase estática que declara los objetos de tipo UI que se van a inicializar (TextView, EditText etc.).
Atributos para definir las columnas de un GridView:
- android:numColumns="" : Número de columnas de la cuadrícula.
- android:verticalSpacing="" y android:horizontalSpacing="" : Define el espaciado vertical y el espaciado horizontal entre las columnas por defecto respectivamente.
- android:columnWidth="" : Especifica el ancho fijo para cada columna.
- android:stretchMode="" : Define cómo las columnas deben estirarse para llenar el espacio vacío disponible.

- android:childDivider="" : Pinta el divisor entre los elementos hijos seleccionando un color.
- android:indicatorEnd="" : Hace referencia al final del marco del elemento hijo.
- android:childIndicator="" : Indicador que muestra el lado de la vista del elemento hijo.
- android:groupIndicator="" : Indicador que muestra el lado de la vista agrupada.
Puede tener un scroll vertical u horizontal, dependiendo de nuestras necesidades a la hora de mostrar el aspecto visual de la aplicación.
(*) Nota: esta clase se descontinua a partir de la API 17
- android:handle="" : corresponde con la imagen o elemento que se encarga de lanzar los eventos que ocultan y muestran el contenido.
- android:content="" : corresponde con el contenido que se muestra cuando el componente se encuentre en su posición de “abierto”.
Os dejamos una tabla comparativa

En la próxima parte de este Tutorial veremos un ejemplo práctico donde visualizaremos artículos, almacenados en una base de datos, tanto en un componente ListView como en un GridView.
Autor: José Antonio Gázquez – Academia Android
Esta entrada tiene 3 comentarios
Los comentarios están cerrados.
[…] y los eventos más utilizados para trabajar con ellos. (Se recomienda revisar el tutorial “Interfaz de usuario: Controles de Selección (I) ” para partir de una base […]
Buenas Tardes
Quería preguntar, como se puede hacer un list view,,y al hacer click a cualquier item de la lista me lleve a otra ventana.
Muchas Gracias
Saludos
Hola Katerinne, tendrías que implementar un evento para detectar cuando se pulsa y hacer a partir de ahí lo que necesites (por ejemplo lanzar otra activity y mostrar información,…).
Para tener una guía más detallada, puedes seguir la publicación de nuestro curso sobre desarrollo de Apps Android (donde tratamos todos estas cuestiones básicas. En próximas entregas hablaremos de elementos relacionados con ésto que preguntas, como la clase ListActivity, el método onListItemClick(), como lanzar otra activity…
También puedes implementar funcionalidades en cierta manera similares (aunque requieren un nivel más avanzado) con Fragments, con Navigation Drawer (menús de navegación laterales) o este proyecto ejemplo que hicimos con transiciones con Material Design y que incluimos en esa serie de tutoriales
Saludos