2016-05-17 7 views
10

Jak wskazuje pytanie, jak powiązać zaznaczone zmiany słuchacza z przyciskiem Przełącz w xml?Jak wdrożyć powiązanie danych dla przycisku Przełączanie dla zdarzenia onCheckedChageListener?

Nie używam widoku recyklera. Prosty układ.

Każda pomoc doceniona.

+0

Co jest nie tak z ustawieniem go dynamicznie? –

+0

Czy możemy użyć tego samego modelu widoku, gdzie indziej w projekcie z obserwowalnymi polami z wykorzystaniem pamięci podręcznej dysku? –

Odpowiedz

4

Można to zrobić z odniesieniem metoda:

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

lub za pomocą wyrażenia lambda, jeśli chcesz przekazać różne parametry:

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

To nie działa dla mnie, otrzymuję komunikat "Nieznany atrybut android: onCheckedChanged" –

+0

@TiagoOliveira mimo że otrzymuję to ostrzeżenie, po uruchomieniu aplikacji wygląda na to, że naprawdę działa – arekolek

+0

@GeorgeMount, dlaczego nie możemy użyć aplikacji: onCheckedChangeListener do metoda połączenia setOnCheckedChangeListener w CheckBox? – David

13

Używanie wyrażenia lambda i Switch:

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

Plik XML:

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

Gdzie item jest klasa, która implementuje onCheckedChange metodę i jest importowany do pliku XML jak poniżej:

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

Czy możemy utworzyć niestandardowe wiązanie dwukierunkowe, które zredukuje wartość standardową –

+0

@AdityaLadwa, co jest nie tak z użyciem atrybutu "checked"? możesz to dość łatwo związać –

Powiązane problemy