待完善
簡介
Databinding用於將視圖上顯示的數據和後臺保存的數據鏈接起來,實現雙向綁定,簡單的使用只需要如下幾步。
1. 一個Databinding格式的xml佈局文件
<layout>
<data>
<variable
name="variableName"
type="variableType"/><!--類型要輸入全名,包括包名-->
</data>
<!--通過@{variableName.property}綁定變量,使用@={varibleName.property}實現雙向綁定,例如EditText,當用戶修改EditText的值時,綁定的數據也會被修改-->
<!--這裏放之前的佈局文件內容,省略其他屬性以便簡潔明瞭-->
<LinearLayout>
<TextView
android:text="@{variable.property1}" />
<EditText
android:text="@={variable.property2}"/>
</LinearLayout>
</layout>
2. 一個存放數據的類
如果需要在數據變化時同步更新UI需要繼承自BaseObservable
,給需要綁定的數據添加get
和set
方法(雙向綁定),並添加@Bindable
註釋,set
方法添加notifyPropertyChanged(BR.property)
用於通知數據改變,需要更新UI。
public class ConfigItem extends BaseObservable {
private String name;
private String value;
@Bindable
public String getName() {
return name;
}
@Bindable
public String getValue() {
return value;
}
@Bindable
public void setName(String name) {
this.name = name;
//通知name屬性變化,更新UI
notifyPropertyChanged(BR.name);
}
//構造方法
public ConfigItem(String name, String value){
this.name = name;
this.value = value;
}
}
3. 綁定View(view由上述xml生成)得到binding對象
//bingding對象的類名由上述xml文件名生成,生成方法是把第一個字母大寫,後面每個下劃線_去掉並把緊跟下劃線的一個字母大寫,最後在加上Binding後綴
//例如我上面的xml文件名爲config_text_item.xml,生成的類名爲ConfigTextItemBinding
ConfigTextItemBinding mBinding = DataBindingUtil.bind(view);
4. 使用binding對象綁定數據
ConfigItem itemData = new ConfigItem("name", "value")
mBinding.setConfig(itemData);