Plus de code en synthétique !

Migrer de Kotlin synthetics vers ViewBinding

Farouk Sabiou
AndroidMood
2 min readDec 15, 2020

--

Vous vous rappelez encore de la fameuse méthode findViewById()?

Bien sûr que oui, vous vous rappelez, comme tout autre développeur Android 😆.

Cette ennuyante époque ou vous êtes obligé de faire des appels findViewById()plus d’un millier de fois dans une seule codebase.

ButterKnife en sauveur !

Début 2013, l’infatigable Jake Wharton annonça la première version de Butterknife, une librairie permettant de se débarrasser defindViewById() en utilisant l’annotation @BindView . ButterKnife restera pendant plus de 4 ans l’une des librairies populaires dans la communauté Android.

Kotlin et les extensions.

Après l’annonce par Google de Kotlin comme langage officiel pour le développement Android, Jetbrains a développé le plugin Gradle pour les extensions Android. Il apporte deux majeures avancées.

  • Synthetics permet de remplacer les appelsfindViewById par le binding aveckotlinx.android.synthetic .
  • Parcelize générer des objets Parcelables sans boilerplate avec une simple annotation:@Parcelize

ViewBinding

Lors du Google I/O 2019, Google a annoncé ViewBinding, une librairie permettant d’interagir plus facilement avec vos vues sans passer par les extensions, ni par la fameuse méthodefindViewById().

Ce tableau compare ViewBinding avec les autres méthodes d’accès aux vues.

ViewBinding vs DataBinding, Kotlin Synthetic et findViewById

En Novembre dernier, Google et Jetbrains ont annoncé conjointement avec la décision de déprécier kotlinx.android.synthetic au détriment de ViewBinding qui devient donc officiellement l’option recommandé pour accéder aux vues dans votre code.

Migrer vers ViewBinding

Avant de commencer, si vous utilisez Parcelize dans votre code, changez le plugin kotlin.android.extensions par le nouveau plugin autonomekotlinx.parcelize qui contient uniquement l’implémentation Parcelable.

Pour migrer, rien de plus simple. Mettez l’option viewBinding sur true dans les modules ou vous voulez utilisez la librairie ViewBinding

Apres chaque build, une binding class est automatiquement générée pour chaque fichier layout contenu dans le module. Elle se présente sous le nom nomFichier suivi de Binding en notation camelCase.

Vous pouvez choisir d’exclure spécifiquement un fichier XML en déclarant
tools:viewBindingIgnore="true".

Par exemple, pour le fichier layout user_profile.xml suivant

la binding class qui sera généré aura comme nom UserProfileBinding que vous pourrez utiliser comme suit:

dans une activité
dans un fragment

et finalement pour accéder aux vues que ce soit dans une activité / fragment, il suffit de procéder comme suit

L’obsolescence a déjà commencée avec la version 1.4.20 de Kotlin (Novembre 2020) et prendra officiellement fin en septembre 2021. N’attendez plus, migrez vos codebases vers ViewBinding et débarrassez vous du code synthétique !

N’oubliez pas de partager et de suivre AndroidMood pour ne pas rater nos prochains articles.

--

--