implementare due modo vincolante per Spinner
1) Utilizzare attributo personalizzato e aggiungere l'espressione vincolante per associare la proprietà di modello di dati per l'attributo personalizzato a due vie, nel seguente codice, si legano: paymentMode è attributo personalizzato.
<android.support.v7.widget.AppCompatSpinner
. . .
bind:pmtOpt="@={accountSettings.defaultPaymentOption}"
app:adapter="@{spinAdapter}" />
2) allora per fornire il comportamento o metodo setter che deve essere usato quando i dati assorbente (modello di dati a trottola) si verifica per questo attributo, BindingAdapter deve essere definito. Quando si verifica l'associazione, è necessario impostare il valore selezionato predefinito e aggiungere il listener selezionato all'arricchitore e nel listener quando si verifica l'evento di selezione dell'elemento, è necessario informare il framework di associazione dati per acquisire il valore utilizzando InverseBindingListener per iniziare il binding inverso.
@BindingAdapter(value = {"bind:paymentMode",
"bind:paymentModeAttrChanged"}, requireAll = false)
public static void setPaymentMode(final AppCompatSpinner spinner,
final String selectedPmtMode,
final InverseBindingListener changeListener) {
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
changeListener.onChange();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
changeListener.onChange();
}
});
spinner.setSelection(getIndexOfItem(spinner, selectedPmtMode));
}
3) Definire legame inversa adattatore (ogiva a modello di dati) che viene utilizzato da quadro per acquisire il valore selezionato dall'utente e impostarlo modello di dati. Questo viene chiamato quando InverseBindingListener riceve la notifica.
@InverseBindingAdapter(attribute = "bind:paymentMode",
event = "bind:paymentModeAttrChanged")
public static String getPaymentMode(final AppCompatSpinner spinner) {
return (String)spinner.getSelectedItem();
}
Per ulteriori informazioni sull'associazione dei dati e filatore a due vie di attuazione vincolante riferimento al http://www.zoftino.com/android-data-binding-library-tutorial
fonte
2018-02-16 04:38:14
si può condividere il modello/classe POJO? –