Wie führen Sie zwei-Wege-Datenbindung mit einem ToggleButton?
Ich habe eine ObservableBoolean
Feld in meine activity-Klasse, die gebunden ist an das "checked" - Attribut des ToggleButton
etwa so:
android:checked="@{activity.editing}"
Ich hatte gehofft, dies würde eine zwei-Wege-Beziehung zwischen der Taste und der boolean -, sondern es führt nur die änderungen aus dem Feld auf den button, nicht die andere Weise. Was mache ich falsch, oder ist diese nicht in den Anwendungsbereich der Android DataBinding
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benötigen Sie einen anderen '=' zu sagen, Android, die Sie verwenden möchten, Zwei-Wege-Datenbindung:
Weitere Informationen finden Sie auf dieser in der wordpress-Artikel von George Mount:
Kein Handlungsbedarf
ObservableBoolean
haben, können Sie diesen Vorgang ausführen, indem Sie reguläre getter-setter-Methode einer boolean-variable. In deiner model-Klasseführen Sie Zwei-Wege-Bindung auf Ihre
ToggleButton
.Holen und diesen Wert mit binding variable.
@Bindable
annotation in IhremisChecked()
und dienotifyPropertyChanged(BR.checked)
in Ihre setter.Hier ist ein einfaches Beispiel einer 2-way-databinding mit einem Schalter, der hat auch die Checked-Eigenschaft, wie das Umschaltfeld.
Item.java:
MainActivity.java:
activity_main.xml:
bauen.gradle:
Quelle Dokumentation: https://developer.android.com/topic/libraries/data-binding/index.html
Hier sind Möglichkeiten zum einstellen
OnCheckedChangeListener
im Daten-Bindung:(1) Satz von Methode Ausdruck
Im layout
In Der Aktivität
(2), vom lambda-Ausdruck und Methode Aufruf
In Der Aktivität
(3) Pass
OnCheckedChangeListener
anonyme Klasse layoutIn Der Aktivität
(4) Pass
OnCheckedChangeListener
durch VerweisAktivität
Das wird niemals funktionieren
Weil Sie können nicht von zwei callback auf eine Komponente. Ein Rückruf ist bereits durch zwei-Wege-Bindung, also der callback wird nicht funktionieren.
Überprüfen Sie, CompoundButtonBindingAdapter - Klasse , um zu sehen, wie Switch-Bindung funktioniert.