Je me demandais si la liaison android est compatible avec les données en direct sur le niveau conceptuel. Il y a une tâche simple: appeler le serveur après avoir cliqué sur le bouton. Donc, à mon avis, j'aiAndroid Architecture Components, liaison android et LiveData
android:onClick="@{viewmodel::onOrderButtonClick}"
et une bonne méthode onOrderButtonClick (View) est défini dans ViewModel. Mais pour faire appel au serveur via LiveData, j'ai besoin de ma référence Fragment (la méthode observer() nécessite l'instance de LifecycleOwner comme premier paramètre). Bien sûr, je ne peux pas contenir de référence à fragment dans mon ViewModel. Quel est le modèle ici? Ai-je vraiment besoin d'implémenter toutes les méthodes événementielles de la classe fragment et de les réintégrer dans la classe de modèle de vue?
Je ne mettrais pas 'onOrderButtonClick()' sur un view-model. À mon humble avis, c'est une action de contrôleur ou de présentateur, pas un view-model. – CommonsWare
@CommonsWare, je pense que lorsque vous utilisez la liaison android c'est la seule option – Marcin
Non. Vous pouvez lier tous les objets que vous voulez. Si vous souhaitez lier un modèle de vue (pour remplir des widgets, et éventuellement pour recevoir une sortie via une liaison bidirectionnelle) et un objet contrôleur/présentateur (pour les événements), vous pouvez le faire. Définissez simplement les deux dans la disposition et appelez les méthodes 'set ...()' correspondantes pour les deux. – CommonsWare