2016-05-17 4 views
10

Come indica la domanda, come associare il listener di modifiche selezionate al pulsante Cambia in xml?Come possiamo implementare l'associazione dati per il pulsante Cambia per l'evento onCheckedChageListener?

Non utilizzo la vista del riciclatore. Solo un layout semplice.

Qualsiasi aiuto apprezzato.

+0

Cosa c'è di sbagliato con l'impostazione in modo dinamico? –

+0

È possibile utilizzare lo stesso modello di visualizzazione in un altro punto del progetto con campi osservabili che utilizzano la cache del disco? –

risposta

4

Si può fare con un riferimento metodo:

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

o con un'espressione lambda, se si desidera passare diversi parametri:

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

Questo non funziona per me ottengo 'Attributo sconosciuto android: onCheckedChanged' –

+0

@TiagoOliveira anche se ricevo anche questo avviso, dopo aver lanciato l'app sembra funzionare davvero – arekolek

+0

@GeorgeMount perché non possiamo usare app: onCheckedChangeListener per metodo call setOnCheckedChangeListener in CheckBox? – David

13

Usando un'espressione lambda ed una Switch:

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

File XML:

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

Dove item è la classe che implementa onCheckedChange metodo e viene importato il file XML in questo modo:

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

Possiamo creare un'associazione a 2 vie personalizzata che ridurrebbe lo standard –

+0

@AdityaLadwa Cosa c'è di sbagliato nell'usare l'attributo 'checked'? puoi legarlo abbastanza facilmente –

Problemi correlati