Android Jetpack View Binding – Développement de logiciels
Fondamentalement, findViewById est l’un des principaux codes passe-partout problématiques dans le développement Android, car il peut conduire à des résultats imprévisibles. Il existe des bibliothèques pour atténuer ce problème; cependant, chacun d’eux a des conséquences négatives dans certains domaines tels que la vitesse, le temps de compilation et la facilité d’utilisation. Pour résoudre ce problème, Google a recommandé la bibliothèque View Binding comme approche efficace. Cet essai vise à considérer la bibliothèque View Binding comme une méthode avancée pour traiter le problème de findViewById dans le développement Android afin d’augmenter l’efficacité et les performances.
Présentation et introduction
Même si à partir d’Android 8 (API 26), Google améliore le findViewById () en utilisant un type générique et en renvoyant un type de vue. L’utilisation d’une vue sans ajouter de vérifications nulles peut conduire à NullPointerException car findViewById n’est pas sûr de null. En conséquence, Google a introduit Voir la reliure en tant que nouvelle approche en plus de la liaison de données, car il s’agit d’une solution plus légère pour remplacer findViewById sans utiliser le reste des fonctionnalités de la bibliothèque de liaisons de données. En d’autres termes, cela pourrait être une solution utile pour éviter les problèmes de performances de la liaison de données, et pourrait également être un moyen alternatif de prendre en charge la sécurité au moment de la compilation. En fait, au lieu d’avoir à rechercher chaque vue, il génère un objet de liaison qui contient toute la vue pour vous. La reliure de vue ajoute de la sécurité. Lorsque vous gonflez une vue, l’objet de liaison vous fournira automatiquement le type exact. Ainsi, les principaux avantages de la liaison de vues sur la liaison de données sont la rapidité et l’efficacité, car le traitement des annotations dans la liaison de données peut affecter l’augmentation du temps de génération. De plus, vous pouvez utiliser cette bibliothèque dans la programmation Java et Kotlin en pratique.
Voir la reliure est une fonctionnalité qui vous permet d’écrire plus facilement du code qui interagit avec les vues.
Activation de la liaison de vues dans Gradle
Fondamentalement, voir les besoins de liaison Android Studio et le plugin Android Gradle 3.6.0 ou supérieur. Pour l’utiliser dans votre module, activez-le dans votre build.gradle fichier. Vous n’avez pas besoin d’inclure de bibliothèque ou de dépendance pour utiliser la liaison de vue. Donc, pour activer la liaison de vues dans un module, ajoutez le viewBinding dans son fichier build.gradle comme suit:
android {
...
viewBinding {
enabled = true
}
}
Dans Android Gradle Plugin 4.0 ou supérieur, viewBinding a été changé en buildFeatures
et vous devez utiliser comme ci-dessous:
android {
...
buildFeatures {
viewBinding = true
}
}
Initialement, lorsque vous activez la liaison de vue dans un module, il génère une classe de liaison pour chaque fichier XML de ce module. Ainsi, une instance d’une classe de liaison contient des références directes à toutes les vues qui ont un ID lié à la mise en page. Dans la plupart des situations, la liaison de vue remplace findViewById
. En outre, si vous souhaitez qu’un fichier de disposition soit ignoré lors de la génération des classes de liaison, vous devez ajouter le tools:viewBindingIgnore="true"
attribut à la vue racine de ce fichier de mise en page.
Utilisation de la liaison de vues dans une activité
Lorsque vous activez le compilateur pour la liaison de vues, il recompilera automatiquement votre projet Android et générera des objets de liaison pour chaque mise en page. Par conséquent, si vous disposez d’un fichier de mise en page appelé activity_main.xml, la liaison de vue génère une petite classe appelée ActivityMainBinding. En fait, le nom de la classe de liaison est produit en convertissant le nom du fichier XML en cas de chameau et en ajoutant le mot «liaison» à la fin. Par exemple:
Cette classe a deux champs: un TextView appelé sampleName et un Button appelé sampleButton. Comme vous le constatez, ImageView dans la mise en page n’a pas d’ID; par conséquent, aucune référence n’y est associée dans la classe de liaison. En outre, toute classe de liaison contient un getRoot () méthode. Ainsi, dans l’exemple ci-dessus, la méthode getRoot () de la classe renvoie la vue racine LinearLayout.
Actuellement, pour configurer une instance de la classe de liaison à utiliser dans une activité, vous devez appeler le statique gonfler() , puis vous devez obtenir une référence à la vue racine en appelant la méthode getRoot () ou en utilisant Syntaxe de la propriété Kotlin. Finalement, vous devez passer la vue racine à setContentView () comme suit:
private lateinit var binding: sampleBindingoverride fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
binding = SampleBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
}
Maintenant, vous pouvez utiliser l’instance de la classe de liaison pour référencer n’importe laquelle des vues:
binding.sampleButton.setOnClickListener(new View.OnClickListener() {
viewModel.userClicked()
});
Utilisation de la liaison de vues dans un fragment
De même, vous devriez nous voir la liaison dans un fragment en trois étapes. Tout d’abord, vous devriez appeler le statique gonfler() , puis vous devez obtenir une référence à la vue racine en appelant la méthode getRoot () méthode ou en utilisant Syntaxe de la propriété Kotlin.
Types de méthode inflate ():
- gonfler (gonfler): vous devez utiliser ce type dans onCreate () d’une activité qu’il n’y a pas de vue parent à transmettre.
- gonfler (gonfleur, parent, attachToParent): vous devez utiliser ce type dans un fragment ou un adaptateur RecyclerView que vous devez passer le parent à l’objet de liaison.
Enfin, vous devez renvoyer la vue racine de la onCreateView () méthode. Cependant, assurez-vous de nettoyer toutes les références à l’instance de classe de liaison dans le fragment du onDestroyView () méthode.
Différences entre la liaison de données et la liaison de vue
Bien que la liaison de données et la vue soient sécurité nulle (il n’y a aucun risque d’exception de pointeur nul) et sécurité de type (il n’y a aucun risque d’exception de classe cast), la liaison de vues peut gérer des cas d’utilisation plus simples et peut offrir les avantages suivants par rapport à la liaison de données:
- Les temps de compilation sont plus rapides en raison de l’absence de traitement d’annotation.
- Facilité d’utilisation: la liaison de vue n’a pas besoin de balise spéciale dans vos fichiers de disposition XML. Ainsi, il serait facile à mettre en œuvre pour le développeur.
En conclusion
En réalité, findViewById est l’un des principaux défis du développement Android car il peut entraîner des comportements et des résultats imprévisibles. Même s’il existe certaines bibliothèques pour atténuer ce problème, chacune d’entre elles a des conséquences négatives dans certains domaines tels que la vitesse, le temps de compilation et la facilité d’utilisation. Dans cet article, consultez la liaison introduite et discutée comme une approche efficace pour résoudre ce problème dans Android, ce qui est recommandé par Google en plus de la liaison de données dans les projets Android. Une sécurité nulle, une sécurité de type, facile à utiliser et une compilation plus rapide sont quelques-uns des avantages importants de cette fonctionnalité dans le développement Android.