Una forma interesante de ver cómo Kotlin simplifica tu vida es la creación de un Adapter de un RecyclerView.

Verás que el código se puede organizar de tal forma que su lectura sea muy sencilla y que evite código redundante.

Este artículo forma parte de una serie de 30 con motivo del lanzamiento del curso presencial de Kotlin para Desarrolladores Android que impartiré en breve.

kotlin-desarrolladores-android

Adapter de RecyclerView en Kotlin

Crearemos un Adapter que asignará un título y una imagen a una celda.

Va a ser un adaptador muy sencillo en el que no permitiremos la modificación de los items. Si queremos nuevos datos, crearemos un nuevo adapter y se lo asignaremos al RecyclerView.

El modelo

Utilizaremos un modelo también muy simple, que sólo necesita un identificador, el título y la url de la imagen.

Usaremos una data class, que si recuerdas ya las vimos hace unos cuantos artículos:

Con esto ya tenemos una clase con su constructor, sus propiedades inmutables, y otras funciones útiles como equals o hashCode implementados.

El Adapter

La estructura del Adapter sería la siguiente, autogenerando los métodos necesarios:

Verás que he creado una clase ViewHolder, que extiende de la original.

Esto es porque el Adapter necesita una implementación de la clase original abstracta.

También que hay algunos elementos marcados como nullable. Esto es porque si la librería no está correctamente anotada con las anotaciones @Nullable y @NonNull, Kotlin no tiene forma de saber si se permiten nulos, y nos deja decidir a nosotros.

Si autogeneramos los métodos, por defecto dará por hecho que los valores son nullable.

Pero estudiando un poco la librería de soporte, sabemos que esos valores no son nulos, así que lo podemos quitar:

El constructor

El adapter necesita recibir por parámetro los items y un listener. El resultado es algo así:

La implementación de los métodos es muy sencilla. Estoy utilizando una función de extensión que creé en un artículo anterior para inflar la vista:

Se pueden implementar los tres métodos con la forma contraída, obteniendo el resultado anterior. En tres líneas tenemos todo el adapter implementado.

Ahora a por la implementación del ViewHolder.

El ViewHolder

El ViewHolder se encargará de asignar los valores del modelo a las vistas correspondientes:

Todo lo que tenemos aquí ya lo hemos visto en otros artículos: la función with, el función de extensión loadUrl para los ImageView, el acceso a las vistas mediante Kotlin Android Extensions y la asignación del listener del click.

Asignación del adapter

Ya queda lo más sencillo: asignar el adapter a la vista

La función final es listener, que recibe un item. El código simplemente imprimirá el título del elemento sobre el que se haga click.

Conclusión

Así de sencillo es implementar un Adapter de un RecyclerView en Kotlin.

Haciendo uso de unas cuantas de las herramientas que hemos aprendido hasta ahora, hemos simplificado hasta el mínimo el código necesario.

Si quieres aprender mucho más sobre todo esto y coger la soltura suficiente para crear tus propias Apps Android, te recomiendo que le eches un vistazo al curso presencial que estoy preparando, y del que ya puedes reservar tu plaza.