Andrews DataBinding (trois) Observable

Android DataBinding (a) Utilisation de base  
Android DataBinding (deux) gestionnaire d'événements 
Android DataBinding (trois) Observable (papier) 
Android DataBinding (d) attributs personnalisés  
Android DataBinding (cinq) de manière personnalisée de représentation obligatoire  
Android DataBinding (six) cravate EditText étant donné TextChangedListener et FocusChangeListener

BaseObservable

Après le changement de la valeur du ViewModel, si vous avez besoin de rafraîchir l'écran en conséquence, il peut être héritée BaseObservable.

private static class User extends BaseObservable {
   private String firstName;
   private String lastName;
   @Bindable
   public String getFirstName() {
       return this.firstName;
   }
   @Bindable
   public String getLastName() {
       return this.lastName;
   }
   public void setFirstName(String firstName) {
       this.firstName = firstName;
       notifyPropertyChanged(BR.firstName);
   }
   public void setLastName(String lastName) {
       this.lastName = lastName;
       notifyPropertyChanged(BR.lastName);
   }
}

Dans la méthode définie, en utilisant NotifyPropertyChanged pour notifier la mise à jour de l' interface utilisateur, rafraîchissement NotifyPropertyChanged seules certaines valeurs, méthode NotifyChange actualise toutes les valeurs. 
BR domaine est généré en ajoutant @Bindable sur la méthode get.

Les champs observable

Hérité de façon BaseObservable un peu compliqué, DataBinding fournit également un libellé simple --ObservableField.

private static class User {
   public final ObservableField<String> firstName =
       new ObservableField<>();
   public final ObservableField<String> lastName =
       new ObservableField<>();
   public final ObservableInt age = new ObservableInt();
}

Définie comme type d'attribut directement ObservableField, et le modificateur public final est nécessaire. 
En outre ObservableField, vous pouvez aussi être utilisé ObservableBoolean, ObservableByte, ObservableChar, ObservableShort,  ObservableInt, ObservableLong, ObservableFloat, ObservableDouble, ObservableParcelable.
Visitez vaut le temps, vous pouvez utiliser la méthode obtenir ensemble.

user.firstName.set("Google");
int age = user.age.get();

Collections observable

Si vous utilisez la carte, la liste et d'autres données sauvegardées. Databinding fournit également ObservableArrayMap, ObservableArrayList.

ObservableArrayMap

ObservableArrayMap<String, Object> user = new ObservableArrayMap<>();
user.put("firstName", "Google");
user.put("lastName", "Inc.");
user.put("age", 17);
<data>
    <import type="android.databinding.ObservableMap"/>
    <variable name="user" type="ObservableMap<String, Object>"/>
</data>
…
<TextView
   android:text='@{user["lastName"]}'
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>
<TextView
   android:text='@{String.valueOf(1 + (Integer)user["age"])}'
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>

ObservableArrayList

ObservableArrayList<Object> user = new ObservableArrayList<>();
user.add("Google");
user.add("Inc.");
user.add(17);
<data>
    <import type="android.databinding.ObservableList"/>
    <import type="com.example.my.app.Fields"/>
    <variable name="user" type="ObservableList<Object>"/>
</data>
…
<TextView
   android:text='@{user[Fields.LAST_NAME]}'
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>
<TextView
   android:text='@{String.valueOf(1 + (Integer)user[Fields.AGE])}'
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>
Publié 24 articles originaux · louange gagné 5 · vues 20000 +

Je suppose que tu aimes

Origine blog.csdn.net/qq_26923265/article/details/82745408
conseillé
Classement