3

Ich habe ziemlich einfachen Code, der nach mehreren Artikeln in Bezug auf DataBinding funktionieren sollte, aber aus irgendeinem Grund ist es nicht.RuntimeException: View-Tag ist nicht korrekt in der Ansicht: null auf ViewAgendaItemBinding.bind() -Methode

Ich versuche RecycleView zusammen mit Databinding zu verwenden.

class ItemViewHolder extends RecyclerView.ViewHolder{ 

    ViewAgendaItemBinding binding; 

    public ItemViewHolder(View itemView) { 
     super(itemView); 
     binding = ViewAgendaItemBinding.bind(itemView); //this is line where it's throw an error. 
    } 
} 

I checked erzeugte Version dieses bind Methode und es ist sieht so aus:

public static ViewAgendaItemBinding bind(android.view.View view, android.databinding.DataBindingComponent bindingComponent) { 
     if (!"layout/view_agenda_item_0".equals(view.getTag())) { 
      throw new RuntimeException("view tag isn't correct on view:" + view.getTag()); 
     } 
     return new ViewAgendaItemBinding(bindingComponent, view); 
    } 

die ziemlich seltsam. Weil ich keine layout/view_agenda_item_0 habe. Diese Ansicht sollte layout/view_agenda_item verwenden und ich habe keine Tags festgelegt. Aber selbst wenn ich dieses Tag für dieses genaue Element einstelle, funktioniert es immer noch nicht.

Was soll ich tun, um dies zu beheben?

P.S. Allerdings, wenn ich diesen Code ViewAgendaItemBinding.bind(itemView) in diesen ändern DataBindingUtils.bind(itemView) es funktioniert. Ist es ein Problem in der Datenbindungsbibliothek?

Antwort

2

Die Datenbindung schreibt Ihre Layout-Dateien während der Kompilierung neu, sodass das Tag automatisch hinzugefügt wird.

DataBindingUtils.bind prüft, ob für die Ansicht eine Bindung vorhanden ist, und verwendet sie erneut. Anscheinend haben Sie die Datenbindung für diese Ansicht an anderer Stelle initialisiert. Ich denke, wir sollten ViewAgendaItemBinding.bind Methode ändern, um das gleiche zu tun.

+0

Ich bin mir nicht sicher, ob ich das richtig verstehe. Ich bin ziemlich sicher, dass dies der einzige Ort war, an dem ich versuchte, Daten zu binden, da es nur ein Dummy-Beispiel für die Verwendung eines Adapters mit Datenbindung war. –