2016-05-17 31 views

Antwort

4

Sie können es mit einer Methode Referenz tun:

<CheckBox android:onCheckedChanged="@{callback::checkedChangedListener}".../> 

oder mit einem Lambda-Ausdruck, wenn Sie verschiedene Parameter übergeben möchten:

<CheckBox android:onCheckedChanged="@{() -> callback.checked()}".../> 
+6

Dies funktioniert nicht für mich, ich bekomme 'Unbekanntes Attribut android: onCheckedChanged' –

+0

@TiagoOliveira obwohl ich auch diese Warnung bekomme, nach dem Start der App scheint es tatsächlich zu arbeiten – arekolek

+0

@GeorgeMount, warum wir App: onCheckedChangeListener nicht verwenden können Call-Methode SetOnCheckedChangeListener in CheckBox? – David

13

Mit Lambda-Ausdruck und eine Switch:

public void onCheckedChanged(boolean checked) { 
    // implementation  
} 

XML-Datei:

<android.support.v7.widget.SwitchCompat 
    android:onCheckedChanged="@{(switch, checked) -> item.onCheckedChanged(checked)}" 
    ... 
/> 

Wo item ist die Klasse, die onCheckedChange Methode implementiert und wird in der XML-Datei wie folgt importiert:

<data> 
    <variable 
     name="item" 
     type="yourClass"/> 
</data> 
+0

Können wir eine benutzerdefinierte 2-Wege-Bindung erstellen, die den Textbaustein –

+0

@AdityaLadwa reduzieren würde? Was ist falsch daran, das Attribut 'checked' zu verwenden? Sie können das ziemlich leicht binden –