標籤:

大家會不會在自己項目中使用Android新推出的DataBinding?


自己玩可以,項目中要使用的話,我會等到至少IDE支持完善,綁定語法更加簡潔之後吧,甚至我可能要等到雙向綁定完全支持,單純的單向綁定目前對我吸引不大,畢竟可以通過第三方的各種工具比較方便的做到。


於 2015.12.15 更新:

最近 Android Studio 升級到了 2.0 版本,發現不需要從 jcenter 中再依賴 DataBinder 這個庫了,2.0 之後的 Android Studio 版本內置就支持了 DataBiding,也不需要在 build.gradle 中添加 com.android.databinding 這個 Plugin 了。使用方式如下:

1、在 Project 的 build.gradle 配置中,使用 1.5.0 以上的 Gradle 版本;

2、在使用 DataBinding 的 Module 中,如下配置:

android {
....
dataBinding {
enabled = true
}
}

詳細信息請關注官方開發者論壇,裡面會隨時更新:

http://developer.android.com/intl/zh-cn/tools/data-binding/guide.html

------------------------ 分割線 ------------------------

最近有新開發的一個項目,也是在知乎上知道了 DataBinding 技術,在這兩天初步了解之後,已經小範圍在使用。在大部分介紹文章中,這篇 Data Binding 用戶指南(Android)我覺得是比較全面易懂的一篇,大家有興趣的可以去看看。

我是先是把一些小的、簡單的布局用 DataBinding 重寫,重寫之後發現 Java 代碼乾淨了不少。其他比較大、複雜、耦合比較嚴重的布局,後續會根據 DataBinding 的完善程度考慮接入進來。

下面有一些遇到的坑

  1. 在多個子 Model 中開發時,如果在子 Model 中定義了 BindingAdapter,在其他 Model 中引用該 BindingAdapter,1.0-rc0 版本會在生成 Binding 的時候出現引用找不到的問題。但是 1.0-rc1 就沒有問題。

  2. 一開始用了 1.0-rc0 版本,發現不好用,於是去搜索看有沒有更新的版本,發現在最近幾天前,剛剛發布了 1.0-rc1 版本,於是果斷切過去。在切過去的時候,在 Build 的時候發現會出現下面的問題:

"Gradle sync failed: could not find com.android.databinding:library:1.0-rc1"

"Gradle sync failed: could not find com.android.databinding:adapters:1.0-rc1"

這個問題在 StackOverflow 上面也有人提問,但是我根據上面的解答來解決,也沒有得到很好的解決。最後通過更新 SDK Extras 的 Android Support Repository 得到解決。

將 Android Support Repository 更新到最新後,在 Android SDK 安裝目錄下就可以找到相關的 pom 和 jar 文件了:

我現在使用的是最新的 1.0-rc1 版本的 DataBinder,後續會積極跟進更新,確保項目使用到最新的 DataBinding 技術。

目前發現的一些缺陷:

  1. 布局 XML 中,無法自動導入 POJO 類,需要手寫,類名重構支持也不完善;
  2. XML 中 DataBinding 相關的代碼補全功能沒有,手寫比較麻煩;
  3. 如果 XML 中有編輯錯誤,在 Build 的時的提示會很莫名其妙,很難排查到:

  4. 經過 DataBinding 實現的自定義 View,在父 Layout 的 XML 布局中無法預覽:

  5. 一些 XML 代碼顯示會有問題,但是能正常 Build 運行。比如:

雖然有一些缺陷,但是,我是對這項技術持樂觀態度,自從用了 DataBinding,很多 findViewById 的代碼完全消失了,代碼乾淨簡潔。相信後續通過 Google 的更新,這項技術肯定會越來越好用。我目前的工程配置如下:


已經嘗試在多個項目使用databinding,對目前的databinding感到很滿意。在alpha階段就開始用了,那時候還有許多bug,不過現在已經很穩定。

目前最大的感受就是極大提高了開發效率,雙向數據綁定代碼更為優雅,維護起來也沒那麼費力氣。所以放心的用吧!


好東西,還不完善,mvvm大勢所趨。

Android Databinding: Goodbye Presenter, hello ViewModel!


去年我就使用了,還是公司的兩個產品中,過程沒發現什麼問題,只是出現問題真的很難定位


抱著新的東西總有它的優點,先試試看的態度,用了一段時間,之後就持保留意見了。出問題定位太麻煩;系統複雜度增加, DataBinding 的使用複雜度也同等增加,並沒有感到輕鬆,有點為鞍配馬的感覺;本意應該是為了 Google 主導的 MVVM 架構而服務的,強行套用其實也還可以,但總感覺不夠自由。


都已經在項目中用了2年了。


databind有一個很大的弊端 繼承性問題。遇到了一個麻煩的問題 ,繼承有點操蛋。 需要重複創建view,導致沒法集成了。 不過 我開發了很久才想到了一個問題解決了activity的多樣性問題。


有沒有人遇到,使用DataBindingUtil根據xml生成不了相應類,怎麼解決呢?


正在學習中。。。


已經在一個小項目中試著用,目前感覺還好。方便了很多


成長起來的databinding肯定是要經常使用的,但是現在階段的databinding還有很多不完善的地方,如果想使用mvvm雙向綁定的話可以用一些第三方控制項例如robobinding等目前來看會更適合項目開發.等谷歌完善databinding後再轉回來.畢竟谷歌腦殘粉...


目前來說我只能慢慢的靠近全部都使用也不是一個好的解決方案,也不敢全部使用


AS2.0已經發布了。對data binding的支持又更進了一步!做技術的,不要畏首畏尾,要樂於嘗試新的技術。話說,我們在項目里已經用data binding了。網上面很多分享資料太老。建議大家直接看官網教程https://developer.android.com/tools/data-binding/guide.html。或者來這裡GitHub - LyndonChin/MasteringAndroidDataBinding: A comprehensive tutorial for Android Data Binding。也歡迎加群交流 324112728。


推薦閱讀:

在食品的銷售中如何利用專業知識?
在中國,大多數做技術的人的出路是什麼?
「翻轉課堂」和學校教育兼容嗎?
大量飼養龍貓(毛絲鼠)的前景?
突然遭遇核武襲擊,無法判斷來源國怎麼辦?

TAG:技術 | Android |