Maintenant, avec l’avènement de Kotlin dans le développement pour Android, un outil utile est apparu pour lier les vues du xml-layout à la classe. Il s’agit de kotlinx.android.synthetic. Il n’est plus nécessaire d’utiliser la méthode findViewById(). Il suffit d’écrire la valeur de l’id, qui est spécifié dans le xml, et vous pouvez utiliser la vue dans la classe.il ya beaucoup d’articles à ce sujet, comme la description officielle par exemple. Mais il peut y avoir des problèmes non évidents avec l’utilisation de la balise <include> dans le layout. Créons un petit exemple et essayons de montrer un tel cas.
L’application de test est la liste avec deux éléments, chacun d’eux contient un bouton avec du texte. Au début va créer des mises en page pour les éléments – item1.xml et item2.xml. Le fond derrière le bouton a des couleurs différentes pour une visibilité plus utile.
Mettons l’accent sur le fait que les boutons dans les éléments ont le même id « bouton ». C’est une chose importante.
Ajouter ensuite ces éléments à main_layout avec l’aide <include> tag:
Maintenant, utilisons-le dans la classe comme layout:
Lancer l’application pour obtenir le résultat suivant :
Identification du problème
Maintenant faisons une petite fonctionnalité, et changeons le texte des boutons dans le code. Il y aura un nouveau texte « Changed Text First Item » pour le premier bouton, et « Changed Text Second Item » pour le second. Pour lier les boutons, nous utiliserons kotlinx.synthetic avec les alias:
import kotlinx.android.synthetic.main.item1.button as button1
import kotlinx.android.synthetic.main.item2.button as button2
Il est évident que le bouton1 est vu depuis item1.xml, le bouton2 depuis item2.xml. Changeons ensuite le texte sur OnCreate:
Exécutons l’application et voyons le résultat: