Integraciones de Kotlin con el SDK de Android (KDA 05)
Antonio Leiva

Kotlin no sólo simplifica el código que crees en su lenguaje, sino que mediante una serie de convenciones hace que todo el código Java sea mucho más sencillo de utilizar.

¿Cómo lo hace? Simplemente toma algunas estructuras generales y les da un aspecto más “Kotlin”.

En este artículo vamos a ver algunos ejemplos, y cómo esto hace nuestro código mucho más homogéneo y más sencillo, evitando gran parte del boilerplate.

¿Te gustaría comenzar hoy a dar el siguiente paso? Te recomiendo que entres en mi training gratuito aquí.

Training Revienta tu productividad en Android con Kotlin

Integraciones de Kotlin con el SDK de Android

Puesto que el framework de Android es básicamente una librería Java, todo lo que hablábamos antes que ocurre con Java, se aplica perfectamente a Android.

Esto va a hacer que muchas veces parezca que el framework de Android se ha escrito en Kotlin, aunque obviamente no es así. Vamos a ver algunos ejemplos:

Los getterssetters se mapean a properties

Esto ya lo hemos visto en algunos artículos anteriores. Aquí tienes la explicación que te prometí.

Como ya hablamos, en Kotlin se usan properties en lugar de campos + getters + setters, y la forma de asignar valores o recuperarlos es la que utilizaríamos con un campo público en Java.

Pero como ya sabemos, por detrás se está ejecutando un código, que bien puede ser una asignación directa, o la operación personalizada que nosotros implementemos.

La regla aquí es que cualquier setX y getX que encuentre en java, lo va a mapear a un property x en Kotlin.

Por ejemplo, si tenemos un TextView, vamos a poder asignarle directamente el texto como si fuera una propiedad:

val textView: TextView = ...
textView.text = "My Text"

Y esto se aplica a cualquier clase, claro. Puedes acceder al applicationContext  o al layoutInflater de una Activity (por poner dos ejemplos) de la misma forma. No hagas mucho caso a los ejemplos en particular, son un poco absurdos:

layoutInflater.inflate(R.layout.view_item, parent)
val hello = applicationContext.getString(R.string.hello)

Si te preocupa el rendimiento de esto, en realidad por detrás sigue mapeando a los getters y los setters originales, así que es lo mismo que llamarlos directamente.

Las interfaces con un sólo método se transforman en lambdas

Esto es una maravilla. ¿No estás harto de crearte clases anónimas para cualquier tontería en Android? Con Kotlin puedes evitarte el tener que hacer esto para muchos de los listeners del framework.

La condición es esa: que sea una interfaz con un único método. El ejemplo más característico es el setOnClickListener de la clase View.

Puedes hacer algo tan sencillo como esto:

view.setOnClickListener { navigateToNextActivity() }

¿Has visto qué fácil?

Si necesitas la vista que devuelve el método de la interfaz original, también puedes recuperarla:

view.setOnClickListener { v -> navigateWithView(v) }

Spoiler: ¿qué es esta nomenclatura tan rara? Se llama lambda, y es una forma de representar funciones donde recibe unos parámetros de entrada (lado izquierdo de la flecha) y realiza una operación, pudiendo devolver un valor de retorno (lado derecho de la flecha). Las veremos en algún artículo posterior.

Conclusión

Es así de sencillo integrar otras librerías de Java, y en particular el framework de Android, en proyectos Kotlin y que además tomen la apariencia de ese lenguaje.

De esta forma tenemos un código mucho más homogéneo.

Si quieres aprender mucho más sobre el lenguaje y hacerlo desde cero, apúntante a mi training gratuito, donde tendrás una hora y media de contenido para saber cuáles son tus siguientes pasos a dar para convertirte en un experto en Kotlin.

Quizá también te interese…

2 formas de recolectar Flows en la UI que SÍ funcionan

2 formas de recolectar Flows en la UI que SÍ funcionan

En la serie de artículos sobre Programación Reactiva con Flow hemos visto muchos conceptos, y hemos aprendido cómo aplicarlos al desarrollo Android. Pero hay algo que no hemos hecho del todo bien. Esto es la recolección de Flows desde la Activity (o el Fragment, en...

Cómo hacer tests de Corrutinas y Flows – Paso a Paso

Cómo hacer tests de Corrutinas y Flows – Paso a Paso

¡Vaya viaje por el que hemos pasado en estos artículos! Hace ya varios de ellos empezamos hablando sobre la programación reactiva con Flow, y hemos aprendido un montón de conceptos e ideas sobre cómo aplicarlos en el día a día. Pero nada de esto está completo si no...

Convertir cualquier callback en un Flow con CallbackFlow

Convertir cualquier callback en un Flow con CallbackFlow

Existen varios tipos de Flows muy particulares que nos van a solucionar la vida cuando tengamos que hacer cosas muy concretas. Ya vimos StateFlow en un artículo anterior, y en esta ocasión hablamos de CallbackFlow ¿Qué es CallbackFlow? Es un tipo de Flow que nos...