pooh3's memo

Android周りを中心に。軽めに、いい加減さ50%程度で

DataBindingを既存のレイアウトファイルに導入する手順的なメモ

この記事のモチベ

Data Binding Guide | Android Developersに書いてある内容って、イマイチピンとこない。
なぜなら既存のレイアウトにどうやってやりゃいいんだとかは、二の次でとりあえず試す方法になっているから。
既存のプロジェクトに導入したい場合のコストがすぐに見えてこないのは、導入を躊躇するケースも増えるだろう。
ということで以下の目的を果たすために調査しブログにメモする。

以下が今回の記事の主な目的
・工程が大まかに分かれば導入しやすくなるんじゃね?というブログネタ的な観点
・自分なりにどうやってDataBindingを導入していこうかという戦略を今後持つため
・DataBindingってそもそもどうやんのよ?を解決して知識としたいため

準備(既存のプロジェクトと仮定したコードを用意)

まず以下のようなレイアウトとActivityクラスを準備した。

次にそれらにDataBindingを適用した

見比べるのは大変だと思うので。GitHubにサンプルコードを置いて、違いがわかるようにプルリクでdiffが見れるようにした。

github.com


適用していった順番は

1, activity_main.xmlのrootタグをに変更し既存のレイアウトをのタグ内に移動し、細かいところを直す。
2, activity_main.xmlタグ部分を作成し、BindするDataクラスを知らせる。
3, activity_main.xmlの"first name"と"last name"を出力する部分に

android:text="@{user.firstName}"
android:text="@{user.lastName}"

それぞれを適用。
4, MainActivity#onCreate()メソッド内にレイアウト名に基づいて自動生成された"ActivityMainBinding"を作成、レイアウトidを教えておく。
5, データをセットする部分(ここではクリックイベントで処理する部分)で4で生成したBinderクラスのインスタンスにUserオブジェクトを生成して渡すようにする。


と言った感じ。
それぞれは難しものではなかった。
やってみると意外と簡単なのだが、公式の説明をエスパー的にこうなんだろうな?ってやっていくという作業を考えた時に億劫になるので
まず導入してみたい人の役に立てばと思う。

MainActivityが綺麗になるので、自分もまず簡単な導入は難なくできるのがわかったので今後積極的に使える場面を逃さず使っていきたい。