AndroidのData Binding Libraryが便利だ

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の代替になる、と紹介している記事も多く見かけるが、実際に使ってみるとそれ以上の有り難みを多く感じる。

  1. 表現に関するより多くのコードをレイアウト(XML)側の記述だけで実現できる場面が増え、FragmentやActivityがすっきりする。
  2. 自然と宣言型プログラミングになり、プレゼンテーションに関する処理とそれ以外の処理がFragmentやActivityの中に混在する、といったようなケースが減る。宣言型プログラミングを強く意識しなくても、半自動的にそうなるし、誰が書いてもそのようになる、というのは良いことだ。

具体的な導入手順を説明している記事はすでに多く出ているので、それらを参照されたい。最後に、凡ミスも多いがAndroid Data Binding Libraryを導入してすぐの頃にはまってしまったミスを列挙しておく。

  1. プロパティに違う型のデータを渡してしまっていた
    1. ProgressBarのprogressには本来intを渡すべきだが、Data Objectからはfloatを渡していた
    2. TextViewに数値の値を表示する時には、Stringで指定する。intを渡すとstringsのリソースのIDとして処理されてしまう。
  2. Data ObjectにパブリックなGetterを定義していなかった
  3. Importのし忘れ
    1. android:visibilityをセットする場合にdataセクションに<import type=”android.view.View” />を定義していなかった

参考情報

  1. Data Bindingとアニメーションの組み合わせについて