Google DataBinding 框架學習資料

入門指南
比較全面的入門demo

其他資料
https://realm.io/cn/news/data-binding-android-boyar-mount/

http://gold.xitu.io/post/578b944a128fe10063ad6c05

優(yōu)點

1. xml中的表達式會自動判空,也就是表達式本身不會拋null point異常;

2. 自動找公開成員變量或者get方法。

  • xml中的表達式 contact.address 首先會嘗試直接獲取獲取,即contact.address。如果成員變量address被申明為private的,就會嘗試調用contact.getAddress()方法。
  • <android.support.v4.widget.DrawerLayout android:layout_width="wrap_content" android:layout_height="wrap_content" app:scrimColor="@{@color/scrimColor}"/>
    如上,DrawerLayout元素沒有android:scrimColor 這樣的寫法,但通過app命名空間,數(shù)據(jù)綁定就會去找DrawerLayout.setScrimColor()方法,非常方便

3. 支持list map

4. 性能好,無反射。

傳統(tǒng)的findview方法耗時,并且每次findView都需要遍歷view hierarchy。但DataBinding會先遍歷一次,把各個view存儲下來,查找view的時候直接取就行了,不需要遍歷。

5. 解耦

通過

@BindingAdapter({"bind:imageUrl", "bind:error"})
public static void loadImage(ImageView view, String url, Drawable error) {
   Picasso.with(view.getContext()).load(url).error(error).into(view);
}

按照定義好的圖片加載方法,在xml中直接使用

app:error="@{@drawable/error}"
app:imageUrl="@{imageUrl}"

這樣通過定義圖片加載接口loadImage實現(xiàn)了解耦,如果要改圖片加載方案,只需要改此接口。

缺點

  1. 無法調試數(shù)據(jù)綁定框架本身。如果有問題,只能檢查自己的寫法,或者就歸于框架bug,無法debug確定
  2. 是比較新的框架,后期API改動可能性大,并且框架本身仍在完善中,比如會有bug,對一些復雜情況(RecyvleView的不常用回調,自定義View等)可能沒有很成熟的支持,也不支持AdapterView對DataSource的動態(tài)綁定。針對這些復雜情況,可以在xml中給view定義id,這樣就能通過binding對象獲取view, 就可以按照傳統(tǒng)的方式處理了。
    而AdapterView的DataSource動態(tài)綁定問題,可以使用開源框架解決,或者使用BindingAdapter注解,相信后續(xù)框架會更方便的支持。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容