Published by

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 Parcelable.

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.

Published by

Commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.