Ahora es mucho más fácil consumir APIs en tus aplicaciones Android si usas Retrofit en Kotlin. Si aún no sabes cómo hacerlo y quieres aprender, en esta guía paso a paso te enseñaremos todo el proceso. Te mostraremos cómo configurar tu proyecto y también sabrás cómo mostrar los datos obtenidos en la interfaz de usuario.
Para este tutorial hemos decidido construir una app muy sencilla que consulta datos de películas de un servicio gratuito de API.
Retrofit en Kotlin: La mejor opción para consumir APIs en Android
Por si no lo sabías, Retrofit es una de las librerías más populares cuando se trata de consumir APIs en Android. Su popularidad se debe a que te facilita enormemente la conexión y el manejo de datos obtenidos en formato JSON, convirtiéndolos en Kotlin. Así es como puedes trabajarlos sin complicaciones.
Fuera de eso, Retrofit en Kotlin es muy eficiente y no presenta problemas al manejar las peticiones en segundo plano. De hecho mejora bastante la fluidez de tu aplicación.
Configurando el proyecto de Retrofit en Kotlin
Paso 1: Crea un nuevo proyecto en Android Studio
Comienza creando un nuevo proyecto de Android en Android Studio. Puedes ponerle un nombre como MovieList y asegúrate de seleccionar Kotlin como lenguaje de programación.
Paso 2: Configura los permisos de internet
Para conectarse a internet y acceder a los datos de la API, agrega el permiso correspondiente en el archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>
Paso 3: Agrega las dependencias en el archivo build.gradle
Retrofit necesita algunas librerías adicionales para su funcionamiento. Abre el archivo build.gradle y agrega las siguientes dependencias:
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.6'
Con estas dependencias es que Retrofit en Kotlin convierte los datos JSON en objetos Kotlin y maneja las peticiones en segundo plano.
Tienes que sincronizar el proyecto para que se descarguen las librerías y puedas usarlas.
Creando la API para consultar datos de películas
Usaremos una API pública de películas. La URL para obtener películas populares es algo como:
https://api.samplemovieapi.com/movies/popular
Paso 4: Crea la Data Class para los datos de la API
Para que Retrofit pueda convertir los datos JSON a objetos Kotlin, necesitas crear una data class. El JSON de respuesta tiene una estructura como esta:
{
"movies": [
{
"title": "The Matrix",
"poster": "https://link.to/poster.jpg",
"rating": 8.7
},
...
]
}
En el directorio principal, crea una nueva clase llamada MovieResponse:
data class MovieResponse(
val movies: List<Movie>
)
data class Movie(
val title: String,
val poster: String,
val rating: Double
)
Paso 5: Crea la interfaz API para Retrofit
Ahora definimos los métodos de la API en una interfaz. Crea una interfaz llamada MovieApiService:
interface MovieApiService {
@GET("movies/popular")
suspend fun getPopularMovies(): Response<MovieResponse>
}
Entonces, el método getPopularMovies() usará la anotación @GET para hacer una solicitud GET a la URL de la API. Además, la palabra clave suspend permite que esta función se ejecute en segundo plano usando corrutinas.
Paso 6: Configura la instancia de Retrofit en Kotlin
Ve al archivo MainActivity.kt y configura la instancia de Retrofit que usarás en la aplicación. Añade este código en el MainActivity:
private fun getRetrofit(): Retrofit {
return Retrofit.Builder()
.baseUrl("https://api.samplemovieapi.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
}
La función getRetrofit() devuelve una instancia de Retrofit configurada con la URL base de la API y un convertidor JSON.
Implementando la lógica de la app con Retrofit en Kotlin
Paso 7: Crea la función para hacer la solicitud de datos
Ahora tienes que añadir la función fetchMovies en el MainActivity:
private fun fetchMovies() {
CoroutineScope(Dispatchers.IO).launch {
val call = getRetrofit().create(MovieApiService::class.java).getPopularMovies()
val movies = call.body()
runOnUiThread {
if (call.isSuccessful) {
val movieList = movies?.movies ?: emptyList()
displayMovies(movieList)
} else {
showError()
}
}
}
}
En esta función, haces la llamada a la API y, si es exitosa, pasas los datos al método displayMovies() para mostrarlos en la interfaz de usuario. Si no ocurre esto, muestras un mensaje de error.
Paso 8: Configura el RecyclerView y el Adapter
Para mostrar las películas, necesitamos un RecyclerView. Así que, en el archivo activity_main.xml, agrega un RecyclerView con el ID rvMovies. Luego, crea una clase MovieAdapter para enlazar los datos con las vistas:
class MovieAdapter(private val movies: List<Movie>) : RecyclerView.Adapter<MovieViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
return MovieViewHolder(layoutInflater.inflate(R.layout.item_movie, parent, false))
}
override fun getItemCount(): Int = movies.size
override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
val item = movies[position]
holder.bind(item)
}
}
El MovieAdapter recibe una lista de películas y la adapta para cada elemento de la vista.
Paso 9: Mostrar los datos en la pantalla
En este paso tienes que crear la función displayMovies en MainActivity para actualizar los datos en el RecyclerView:
private fun displayMovies(movies: List<Movie>) {
val adapter = MovieAdapter(movies)
binding.rvMovies.layoutManager = LinearLayoutManager(this)
binding.rvMovies.adapter = adapter
}
🔴 ¿Quieres entrar de lleno al Desarrollo Mobile? 🔴
Descubre el Desarrollo de Apps Móviles Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Desarrollo de Apps Móviles por una semanaAsí es como la función displayMovies recibe una lista de películas y la muestra en el RecyclerView.
Paso 10: Manejo de errores
Agrega un método para mostrar un mensaje de error en caso de que la llamada a la API falle:
private fun showError() {
Toast.makeText(this, "Error al cargar películas", Toast.LENGTH_SHORT).show()
}
Este Toast le deja saber al usuario si ocurrió un problema al cargar los datos.
Ejecuta y prueba la app
¡Lo lograste! Lo único que tienes que hacer ahora es probar tu aplicación. Cada vez que inicies la app, se mostrará la lista de películas populares obtenidas mediante Retrofit en Kotlin.
Con este tutorial ya tienes una buena idea de lo que puedes hacer con Retrofit en Kotlin. Ahora imagina crear apps completas para Android, aprendiendo desde cero y llevándolas a un nivel profesional. En el Bootcamp de Desarrollo de Aplicaciones Móviles iOS & Android de KeepCoding, aprenderás no solo a manejar Retrofit en Kotlin, sino también muchas más herramientas esenciales para convertirte en un desarrollador móvil profesional.