Android Plugin for Gradle 1.5.0-alpha1から使えるようになったData Binding Libraryが便利だ。
Data Binding Libraryを使うメリットはData Bindingの概念がもたらす本来的なメリット(宣言的プログラミングが可能になる)と、Data Binding Libraryが備えている便利な機能がもたらす副次的なメリット(諸々の箇所で実装が短くなる)があるが、その内容は下記の記事でとてもわかりやすくまとめられている。
http://angelolloqui.com/blog/35-Improving-your-Android-apps-with-Data-Bindings
Data Binding LibraryをButterKnifeの代替になる、と紹介している記事も多く見かけるが、実際に使ってみるとそれ以上の有り難みを多く感じる。
- 表現に関するより多くのコードをレイアウト(XML)側の記述だけで実現できる場面が増え、FragmentやActivityがすっきりする。
- 自然と宣言型プログラミングになり、プレゼンテーションに関する処理とそれ以外の処理がFragmentやActivityの中に混在する、といったようなケースが減る。宣言型プログラミングを強く意識しなくても、半自動的にそうなるし、誰が書いてもそのようになる、というのは良いことだ。
具体的な導入手順を説明している記事はすでに多く出ているので、それらを参照されたい。最後に、凡ミスも多いがAndroid Data Binding Libraryを導入してすぐの頃にはまってしまったミスを列挙しておく。
- プロパティに違う型のデータを渡してしまっていた
- ProgressBarのprogressには本来intを渡すべきだが、Data Objectからはfloatを渡していた
- TextViewに数値の値を表示する時には、Stringで指定する。intを渡すとstringsのリソースのIDとして処理されてしまう。
- Data ObjectにパブリックなGetterを定義していなかった
- Importのし忘れ
- android:visibilityをセットする場合にdataセクションに<import type=”android.view.View” />を定義していなかった