第一部分:DataBinding是什麼?
我來答: 是google官方指導架構篇Architecture Components的一個支持庫,借用它可以將UI界面組件綁定到應用的數據源中。
第二部分: 作爲Android 開發者我如何接入使用呢?
只需一步,在app module的build.gradle下加入如下配置:
android { ...
dataBinding {
enabled = true
} }
拓展:我所理解的mvvm
通常實現Android業務時我們在Activity裏書寫查找控件、界面交互、網絡請求、邏輯業務代碼,很快我們寫多了發現Activity裏代碼太多,業務模塊複用不便,爲此大家開始用MVP,比如將網絡請求和業務模塊放在Presenter裏,後來爲我們熟知的Architecture Components推出了很多好用的庫,其中有DataBinding,ViewModel,realm,room,lifecycleview,liveData等,後來大家開始使用ViewModel+DataBinding來實現MVVM,ViewModel裏主要放置數據(ObservableField,ObservableBoolean,ObservableArrayList),以及一些網絡請求,業務邏輯代碼。據我使用的經驗來說,這個看似很簡單,但是如何把握分離的度和恰好的利用來做業務設計不是朝夕的功夫還得多踩坑,但是這樣使用起來更利於邏輯的梳理,代碼解耦和相似業務代碼的複用以及數據共享
第三部分: 快快教我大展伸手吧~~~^o^
一入英文文檔深似海,出來只是碼路人,要想用得好,還得多實戰。 下面就我的理解和實際運用略說一二:
初級應用: 利用DataBinding替代findViewById
初級應用: UI事件綁定(方法引用和用lamda表達式自定義方法調用)
初級應用: include綁定和使用Observable雙向綁定
初級應用: 表達式和Observable
高級應用: BindingAdapter爲你自定義屬性設置綁定方法
@BindingAdapter({"imageUrl", "error"})
public static void loadImage(ImageView view, String url, Drawable error)
{
Picasso.get().load(url).error(error).into(view);
}
@BindingAdapter({"imageUrl", "error"})
public static void loadImage(ImageView view, String url, Drawable error) {
Picasso.get().load(url).error(error).into(view);
}
高級應用: DataBinding雙向綁定
雙向綁定使用方法:
解決雙向綁定的死循環
監聽雙向綁定的屬性值變化
高級應用: Recycleview使用DataBinding
附: Demo代碼