recyclerview

Los RecyclerView son elementos muy socorridos cuando quieres mostrar una lista con una funcionalidad más avanzada que la que puede tener un ListView. Hacer la tuya a tu gusto no es nada complicado y los resultados son muy agradables para el usuario.

Vas a ver como puedes hacerla teniendo de ejemplo una app que gestiona los pedidos de una pizzería, ¡manos a la masa!

Incluir la dependencia en gradle

Para poder trabajar con RecyclerView lo primero que vas a hacer es incluir la dependencia en el fichero build.gradle:

Con esto ya están disponibles en tu proyecto.

Dar forma al Adapter

El adapter es el encargado de dar forma a los elementos de la lista para que obtengan la apariencia y funcionalidad que quieres mostrar en tu app.

Para poder preparar los datos que tendrá la RecyclerView tienes que crear un Adapter específico, este heredará de RecyclerView.Adapter.

Los puntos clave que tienes que llevar a cabo para hacer el Adapter son los siguientes:

Crear un ViewHolder para tu Adapter

Este tipo de Adapter funciona junto con un RecyclerView.ViewHolder. La función del ViewHolder es la de representar cada uno de los items que forman la lista.

Puedes utilizar RecyclerView.ViewHolder básico o puedes crear el tuyo propio que extienda de esa clase. Para el ejemplo podrías usar uno como este:

Puedes incluir este ViewHolder como una subclase dentro del Adapter. Te quedaría algo así:

Los items generados por este ViewHolder serían similares a este:

Pizza item

Tiene buena pinta, pero aún hay que darle algo de sustancia.

Crear una lista de elementos en el Adapter

Ahora tienes que crear una lista con los elementos que mostrarás en la app, para el ejemplo serían las pizzas.

Procura que esta lista esté inicializada, aunque sea a una lista vacía, antes de intentar mostrar los datos o se producirá un error. El Adapter puede recibir una lista con datos a través del constructor o de un método encargado de su asignación.

Enlazar la lista de elementos al ViewHolder

El siguiente paso es enlazar el ViewHolder con los elementos de la lista. Para ello te servirás de los métodos onCreateViewHolder y onBindViewHolder que tendrás que implementar por extender de RecyclerView.Adapter.

En el método onCreateViewHolder inflarás el layout del item al ViewHolder:

El método onBindViewHolder es el encargado de unir el ViewHolder con un elemento de la lista que ocupa la posición indicada por parámetro:

¡Perfecto! Ya tienes lo básico, ahora puedes incluir otros métodos dependiendo de la funcionalidad que le quieras dar a la app.

En el ejemplo que te ofrezco quiero incluir la opción de agregar o quitar pizzas de la lista, aquí los tienes:

Incluir items

Cuando insertes un nuevo elemento en la lista del Adapter tienes que llamar al método notifyItemInserted especificando la posición donde has incluido el nuevo item.

Por ejemplo, para insertar una nueva pizza al inicio de la lista harías lo siguiente:

Eliminar items

Como en el caso anterior necesitas llamar a notifyItemRemoved para indicar que has eliminado un item indicando su posición.

Incluir el RecyclerView a la vista

Una vez que tienes preparado el Adapter ya puedes asignarlo a la lista. Para ello los RecyclerView, como todas las views de listas, cuentan con un método setAdapter encargado de asignar un adapter, pero hay otros métodos de utilidad en el momento de preparar por primera vez un RecyclerView:

Método setLayoutManager

El layoutManager es el encargado de determinar como se van a mostrar los items en el RecyclerView. Echa un vistazo al constructor LinearLayoutManager(Context context):

De esta manera indicas que quieres mostrar una lista de elementos vertical, pero puedes crear tu propio LinearLayoutManager para personalizar tu RecyclerView.

Método setHasFixedSize

Este método sirve para optimizar el RecyclerView siempre y cuando sepas que los cambios en el adapter no van a afectar a su tamaño. En el caso de que pueda variar no hará falta poner la instrucción, ya que por defecto es false.

Método setItemAnimator

Con un RecyclerView.ItemAnimator puedes crear animaciones para los items personalizándolo más aún. Por defecto los RecyclerView tienen un DefaultItemAnimator, así que si no quieres nada especial puedes omitir esa línea.

Conclusión

Bueno, con todo esto ya puedes montar tus propios RecyclerView personalizando las subclases que trabajan con ella puedes darle el aspecto que quieras.

Puedes acceder a la app de la pizzería que he utilizado como ejemplo aquí.

Ahora viene tú momento ¿de qué manera personalizas y preparas tus RecyclerView?

¡Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *