Je suis capable d'accéder à mes vues de mise en page (Bouton, TextView, EditText, etc.) directement à l'intérieur de l'activité par leurs identifiants définis dans le fichier XML de layout dans le projet Kotlin Android.
Alors, devons-nous utiliser FitViewByID () ou Butterknife Lib dans le projet Android Kotlin? P>
Studentactivity.kt P>
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val studentViewModel = getStudentViewModel() updateButton.setOnClickListener { val name = nameEditText.text.toString() val age = ageEditText.text.toString() val subject = subjectEditText.text.toString() studentViewModel.updateStudentRecord( Student( name, Integer.parseInt(age), subject ) ) } } }```
3 Réponses :
Je pense que vous n'utiliserez plus, juste si vous voulez? Mais je crois que cela n'est pas à cause des accesseurs synthétiques, c'est à cause des liaisons de données et de l'annonce cette année, View Liaison P>
Butterknife code> est une ancienne solution pour la liaison de vue. Il a moins de code de la chaudron de la chaudron que l'ancien
FOUTVIEDYID CODE> WAY, mais à cause de
Processeurs d'annotation CODE> IT IMPORTS SUPPORTATION DE LA VITESSE DE TEMPS ET NE PAS FOURNIR
NULL SECURITE CODE> ET
Type Safety Code>. Une meilleure solution est
kotlinx.android.synthétique code> que vous avez utilisé dans votre exemple mais cela a également des problèmes aussi. Par exemple, si vous définissez la vue de votre contenu sur une mise en page, tapez un identifiant qui n'existe que dans une mise en page différente, l'IDE vous permet de faire une autocomplete et d'ajouter la nouvelle instruction d'importation. À moins que le développeur ne vérifie spécifiquement pour s'assurer que leurs déclarations d'importation n'importent que les vues correctes, il n'existe aucun moyen sûr de vérifier que cela ne provoquera pas de problème d'exécution. Comme tout est global, il faut veiller à ce qu'ils utilisent uniquement des vues qu'ils attendent et ignorent l'autocomplète.
Databindinging code> et
ViewLinding code> sont les meilleures solutions pour l'instant. Ils sont similaires au premier regard. Les deux génèrent des classes de liaison que vous pouvez utiliser pour référencer des vues directement avec la prise en charge
null sécurité code> et
type sécurité code>, mais il y a des différences: p>
Databindinging Distance code> Vous devez ajouter
ViewLinding code> ne prend pas en charge les variables de mise en page ou les expressions de présentation, de sorte qu'il ne peut donc pas être utilisé pour lier des mises en page avec des données dans XML LI>
ul>
ViewLinding code> est plus rapide que
Databindinging code> dans la limite de construction car il n'utilise pas les processeurs d'annotation. P>
Oui, vous avez raison mais la liaison des données est un peu compliquée dans le cas de CustomView.
Que voulez-vous dire de CustoralView? @Rocheux
Nope, voici la magie de Kotlin. Utilisez simplement votre identifiant à partir du fichier de mise en page (XML) et utilisez-le directement. Comme:
bouton.setonclicklistener {} code>
etc. J'espère que cela aidera. P>
Vous pouvez utiliser des importations synthétiques tout à fait. Je l'utilise également en faveur de Butterknife. Cela dit, voir cette Stackoverflow.com/a/58155708/3999808
Utilisez DataBinding Son meilleur et la base de données est également utilisée pour de nombreuses autres choses