Ich bin in der Lage, "activity-wide" Datenbindung ohne Probleme zu arbeiten. Wenn ich jedoch versuche, Bindungen für bestimmte Ansichten zu erstellen, z. B. überhöhte Ansichten, die ich programmatisch zu einem LinearLayout hinzufüge, funktioniert nichts, was ich versucht habe.Android Data Binding auf einzelne Ansichten hinzugefügt zu LinearLayout programmatisch?
Beispielsweise ist das Binden von Daten an die Ansicht einer Aktivität trivial. In der OnCreate() Methode muss man nur hinzufügen:
MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
User user = new User("Test", "User");
binding.setUser(user);
Das war's! Die Ansicht main_activity.xml wird durch Magie an die Bindung gebunden (dies ist mein Problem) und die Variablensubstitution funktioniert wie erwartet in der Datei main_activity.xml.
Ich konsultierte Googles Dokumentation bezüglich RecyclerView Verwendung und versuchte, diese Methode in meinen überhöhten Ansichten zu verwenden. Ich tat dies, indem ich ein ListItemBinding (meine .xml heißt nur list_item.xml und diese Datei wurde automatisch vom .xml-Layout erzeugt) für jeden ViewHolder, die ListItemBinding an den ViewHolder übergeben, um als Referenz durchgehalten zu werden der Konstruktor jedes ViewHolders.
Jetzt funktioniert das natürlich nicht, und ich vermute, dass der Grund dafür ist, dass es keine explizite Verbindung zwischen meiner Ansicht und der Bindung gibt. Es gibt jedoch keine Verbindung zwischen der obigen Aktivität und der Bindung funktioniert es?
Ich greife in den Quellcode, um zu sehen, wie die Bindung auf Aktivitäten funktioniert, ich bin mir sicher, dass das meine Antwort haben wird, aber wenn jemand anderes vor mehreren Stunden spielen kann, würde ich mich über den Kopf freuen. Anfang!
Ich werde alle Ergebnisse hier berichtet, vielen Dank
Es gibt einige Tricks, um mit Android Data Binding mit RecyclerView. Werfen Sie einen Blick auf diesen Vortrag https://realm.io/news/data-binding-android-boyar-mount/ - ungefähr 22 Minuten später spricht Yigit darüber, wie Datenbindung mit RecyclerView verwendet werden kann. –
@GeorgeMount Ich wollte eigentlich keinen RecyclerView verwenden, da es nur 5 Ansichten pro Liste gibt, so dass nicht viel Recycling gemacht werden muss ... Wie auch immer, ich habe auf die richtigen RecyclerViews gewechselt, indem ich ein LinearLayout verwendet habe individuell dazu. Es war sehr einfach und der zusätzliche Aufwand ist wahrscheinlich den direkten Ansatz wert. – AutoM8R