Parcelables en Android-Kotlin con ‘kotlin-parcelize’

Kotlin cada vez nos facilita más la vida, no dudes que en un futuro solo escribas «Kotlin, por favor desarróllame una app bonita sin errores y que se venta como pan caliente» y lo haga por sí solo (Es broma pero muchos clientes en serio creen que así funciona 😛)

Una de las cosas que se han vuelto muy fáciles es pasar objetos completos entre activities usando intents, para esto tenemos que implementar algo llamado Parcelable en la clase y esto convierte a los objetos a un formato que pueda ser enviado a través de un intent, a este proceso se le llama «serialización».

Supongamos que tenemos una clase Person:

Person(val name: String,
val age: Int,
val weight: Double,
val height: Double)

En vez de hacer esto:

val intent = Intent(this, OtherActivity::class.java)
intent.putExtra("name", person.name)
intent.putExtra("age", person.age)
intent.putExtra("weight", person.weight)
intent.putExtra("height", person.height)
startActivity(intent)

Podemos hacer esto:

val intent = Intent(this, OtherActivity::class.java)
intent.putExtra("person", person)
startActivity(intent)

Como dije arriba, para poder hacer esto la clase Person debe implementar Parcelable, antes esto era una tarea aburrida y repetitiva pero ahora basta con hacer lo siguiente: Primero agregamos el plugin de kotlin-parcelize en el archivo build.gradle(app)

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    ...
    id 'kotlin-parcelize'
}

Luego vamos a la clase Person y agregamos @Parcelize en la parte superior, también implementamos Parcelable así:

import kotlinx.parcelize.Parcelize

@Parcelize
Person(val name: String,
       val age: Int, 
       val weight: Double, 
       val height: Double) : Parcelable

Y listo, ya con eso podemos pasar los objetos de tipo Person entre activities.

Espero que te sirva este pequeño consejo, si es así te invito a suscribirte y dejar tus comentarios o dudas o lo que sea.

Publicado por Jesus Almaral

Soy ingeniero en Mecatrónica con maestría en Machine Learning, tengo experiencia en lenguajes como Java, Kotlin, Matlab, Android, Python, etc. Actualmente soy desarrollador de aplicaciones móviles, me gusta la música y toco la guitarra, me gusta mucho saber cosas sobre el universo, leer y comer tacos. También me apasiona enseñar.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: