Android Datenbindung - Referenz zu sehen

7

Ich verwende in meiner neuen App die Datenbindungsbibliothek von Android. Derzeit versuche ich, eine Referenz einer anderen Ansicht an eine Methode zu übergeben.

Ich habe ein ImageButton mit einem onClickListener . In diesem onClick-Listener möchte ich eine Referenz der Stammansicht an die Methode übergeben.

%Vor%

Dieser oben angegebene Quellcode ist nur ein Beispiel und nicht der vollständige. Es gibt mehr Kinder und auch die Bildschaltfläche ist kein direktes Kind des Wurzelelements. Aber ich denke, die Bedeutung ist klar.

Ich habe bereits versucht, eine Referenz zu übergeben, indem ich die ID der Stammansicht angegeben habe (siehe oben). Aber das funktioniert nicht. Wenn ich versuche, dies zu kompilieren, bekomme ich den Fehler, dass der Typ von root_element nicht angegeben ist.

Ich habe auch versucht, die generierte Bindungsklasse zu importieren und auf das Root-Element durch das öffentliche Feld zuzugreifen. Auch diese Methode funktioniert nicht, da zuerst die Bindungsklasse erzeugt werden muss.

Gibt es also eine Möglichkeit, eine Referenz einer Ansicht an eine Methode zu übergeben? Ich weiß, dass ich die ID der Root-Ansicht mit @id/root_element übergeben könnte, aber das möchte ich nicht, da ich einen Weg finden muss, einen Verweis auf diese Ansicht nur mit der angegebenen ID zu erhalten.

    
Fabian 28.06.2016, 13:34
quelle

2 Antworten

4

Der Unterschied zwischen dem, was Sie haben und dem, was Sie tun sollten, ist, dass Sie die ID root_element nicht übergeben. Stattdessen sollten Sie die Ansicht als eine andere Variable in die Layoutdatei übertragen.

In meinem Fall hatte ich einen Schalter in meinem Layout, den ich als Parameter an eine Methode in meinem Lambda übergeben wollte. Mein Code ist wie folgt:

%Vor%

Dann ist mein Layout so:

%Vor%

Wie Sie sehen können, bekomme ich in meinem Code den Verweis auf meinen Schalter und gebe ihn als Variable in die Bindung ein. Dann habe ich dann in meinem Layout Zugriff darauf, um es in meinem Lambda zu übergeben.

    
Matt Horst 28.06.2016, 20:00
quelle
35

Sie können root_element verwenden, aber Android Data Binding camel-cases die Namen. So wird root_element zu rootElement. Ihr Handler sollte sein:

%Vor%     
George Mount 30.06.2016 15:00
quelle