앤드류스 데이터 바인딩 (3 개) 관찰 가능한

안드로이드 데이터 바인딩 (가) 기본 사용법  
안드로이드 데이터 바인딩 (이) 이벤트 핸들러 
안드로이드 데이터 바인딩 (3 개) 관찰 가능한 (종이) 
안드로이드 데이터 바인딩 (D) 사용자 지정 특성을  
안드로이드 데이터 바인딩 (오) 바인딩 사용자 정의보기의 방법  
안드로이드 데이터 바인딩 (육) 글고 타이 TextChangedListener 및 FocusChangeListener에게 주어진

BaseObservable

그에 따라 화면을 새로해야하는 경우 뷰 모델의 값의 변화 후, 그것은 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);
   }
}

설정 방법은 내부 notifyChange 방법은 모든 값을 새로 고쳐, 리프레시가 특정 값 notifyPropertyChanged 상기 UI 갱신을 통지하도록 사용 notifyPropertyChanged. 
BR 도메인은 get 메소드에 @Bindable를 추가하여 생성됩니다.

관찰 가능한 필드

조금 복잡 BaseObservable 방식에서 상속, 데이터 바인딩은 간단한 문구 --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();
}

직접 ObservableField 속성 유형으로 정의하고, 공공 최종 수정이 필요하다. 
추가 ObservableField, 당신은 또한 사용할 수 있습니다 ObservableBoolean, ObservableByte, ObservableChar, ObservableShort,  ObservableInt, ObservableLong, ObservableFloat, ObservableDouble, ObservableParcelable.
방문 가치가 시간, 당신은 설정 방법을 얻을 수 있습니다.

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

관찰 컬렉션

당신은지도, 목록 및 기타 저장된 데이터를 사용하는 경우. 데이터 바인딩은 또한, ObservableArrayList을 ObservableArrayMap 제공합니다.

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"/>
게시 24 개 원래 기사 · 원 찬양 5 ·은 20000 +를 볼

추천

출처blog.csdn.net/qq_26923265/article/details/82745408