Il y a 4 ans -
Temps de lecture 1 minute
Pépite #11 – Sérialiser plus simplement avec Parcelize
Vous vous êtes sûrement confrontés au transfert de données entre les Activities
ou les Fragments
.
Comme tout bon développeur Android, vous deviez choisir Parcelable
bien évidemment pour éviter la réflexion du Serializable
de Java.
data class Person( val firstname: String, val lastname: String, val age: Int ): Parcelable{ constructor(parcel: Parcel) : this( parcel.readString(), parcel.readString(), parcel.readInt() ) override fun writeToParcel(Parcel parcel, int flags) { parcel.writeString(firstname) parcel.writeString(lastname) parcel.writeInt(age) } override fun describeContents() : Int { return 0 } companion object CREATOR : Parcelable.Creator<Person> { override fun createFromParcel(parcel: Parcel): Person { return Person(parcel) } override fun newArray(size: Int): Array<Person?> { return arrayOfNulls(size) } } } |
Il peut être pénible d’implémenter un Parcelable
, en particulier lorsqu’il est fait en cascade.
Parcelize, introduit par JetBrains dans la version 1.1.4 avec le plugin Android Extensions, est un générateur d’implémentation de Pa
rcelable
.
Ci-dessous la configuration nécessaire pour son utilisation. À noter qu’il vous faut activer le mode experimental afin d’utiliser la dernière version, Parcelize
est en experimentation à l’heure actuelle.
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { ... androidExtensions { experimental = true } } |
Comment utiliser ? C’est très rapide. Il vous suffit simplement d’annoter la classe à parceliser par Parcelize
et de la faire hériter de Parcelable.
import kotlinx.android.parcel.Parcelize @Parcelize data class Person( val firstname: String, val lastname: String, val age: Int ): Parcelable |
La liste des types supportés est large allant des primitives jusqu’aux Arrays et Map, je vous invite à aller voir la présentation Parcelize
sur le site de JetBrains.
Commentaire