>

Kotlin: Un paso más, Retrofit y JobQueue #KotlinMeetsAndroid

Francisco Manuel López Jurado     Colaboraciones    03/11/2017

Continuando con nuestra aplicación totalmente funcional, en esta ocasión vamos a dar un paso más realizando una llamada a un servicio (en segundo plano claro está) y representaremos sus datos posteriormente haciendo uso de lo aprendido en nuestro anterior post. Para hacer la llamada usaremos una biblioteca muy conocida entre los desarrolladores, Retrofit. Como hemos comentado anteriormente, no nos vamos a centrar por el momento en la arquitectura, sólo en la funcionalidad y en siguientes artículos iremos migrando todo nuestro código hasta llegar a una división por capas correcta y siguiendo los estándares de calidad y desarrollo. Sin más, ¡empezamos!

  1. Añadimos Retrofit a nuestro proyecto

Tenemos que añadir las dependencias de OkHttp3 y Retrofit2 a nuestro proyecto, por lo que nuestro fichero build.gradle debería tener también:

Es importante excluir el módulo de Okhttp al incluir Retrofit2 ya que definiremos nuestra propia versión.

  1. Creamos nuestra interfaz para realizar la llamada.

Para ello crearemos una interfaz llamada en nuestro caso “ResourceService” que tendrá un método llamado “requestResourceList” que recibirá dos parámetros. El primero indicará la categoría y el segundo el elemento que retornará el servicio. Dicho método retornará un elemento “Call” de retrofit.

Además de lo anterior, definiremos una constante con el endpoint al que realizaremos las llamada.

  1. Crear instancias de Okhttp y Retrofit

Para comenzar, crearemos una clase que tendrá un método que retorne la instancia de retrofit totalmente configurada y lista para su uso posterior. Para ello, deberá tener un método privado que creará la instancia de Okhttp para poder realizar las llamadas. En este caso, las diferencias con el código Java son mínimas en cuanto a la definición de los métodos:

Lo único que no hemos visto anteriormente son los “companion object”, simplemente se trata de la definición de métodos estáticos. En este caso podríamos hacer uso del método “generateRetrofitInstance” de la siguiente forma:

AppApiService.generateRetrofitInstance()

  1. Incluímos JobQueue en nuestro proyecto y crearemos nuestro primer Job.

Para ello, solo necesitamos incluir la dependencia en el fichero build.gradle tal que así:

Seguido de esto, debemos implementaremos el método que más importante, “onRun” ya que será donde incluiremos nuestra llamada a servicio, para ello, seguiremos los siguientes pasos:

  1. Creamos la interfaz para realizar la posterior llamada.

  1. Realizamos la llamada pasándole como parámetros “Fruit” and “Peaches”.

  1. Ejecutamos la llamada y transformamos los datos desde el DTO al modelo de nuestra app.

  1. Por último, crearemos el manager que controlará la ejecución del Job.

  1. Parseamos los datos y los mapeamos para convertirlos a nuestro modelo.

En el caso del DTO, usaremos las mismas anotaciones que en Java, aunque la clase quedará mucho más simple ya que no necesitaremos los “getters” ni “setters”. Es importante destacar que los signos de interrogación indican que los valores pueden ser nulos.

La clase ItemModel, que será el que usaremos para el adapter, sería exactamente la misma clase pero sin las anotaciones.

La clase que se encargará de convertir ambos modelos quedaría tal que así:

  1. Como último paso, representaremos los datos en un RecyclerView.

Los elementos retornados por el servicio serán pasados al adapter para su posterior pintado en pantalla. Si no recuerdas cómo usar un RecyclerView y un Adapter en Kotlin, sólo tienes que seguir nuestro anterior post.

Finalmente el listado tendría el siguiente aspecto:

En resumen, con Kotlin todo es posible y por el momento no plantea problemas de integración ni incompatibilidades, por lo que nuestra aplicación empieza a tomar forma y ya dispone de varias funcionalidades muy usadas en todos nuestros desarrollos. En artículos posteriores empezaremos a añadir un poco de arquitectura (MVP), bases de datos y mucho más.

Os animo a que empecéis a migrar pequeñas aplicaciones que tengáis a Kotlin o todas aquellas que empiecen de 0, empecéis a usar tanto código Java como Kotlin para que el inicio no sea tan complicado y os vayáis acostumbrando a lo bueno. Espero que os haya gustado.


Sobre el autor

Francisco Manuel López Jurado   

Apasionado de la tecnología y todo lo que la rodea. Desarrollador Senior Android e iOS.