Data Bindingを利用する

久々の更新です。
Androidの開発でよく利用される機能やライブラリを、一つ一つ紹介していくのも良いのではないかと思い、記事を書いていきたいと思います。
まず取り上げるのはData Bindingです。
サンプルはこちらにあるので、参考にしてください。
https://github.com/shige0501/buildbox-databinding

オブジェクトを取得して実装するときには、以下のようなコードを書きます。

TextView messageView = findViewById(R.id.message_view);
messageView.setText("テストメッセージ");

上記の例だとテキストビューひとつですが、複数のウィジェットに寄よって構成される画面では、上記のようなオブジェクトの取得処理はとても冗長となります。
Data Bindingを利用すると、レイアウト上で定義した内容から自動でコードが生成されるため、かなりシンプルなコードにすることが可能です。

https://github.com/shige0501/buildbox-databinding/blob/master/app/src/main/java/net/buildbox/sample/buildbox_databinding/MainActivity.java#L14

ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
binding.messageView.setText("テストメッセージ");

ActivityMainBindingは activity_main.xml から自動生成されたクラスです。
上記例では onCreate() メソッド内で定義している想定で書いてますが、クラスのフィールドで変数を持たせておけば、
Activity / Fragment全体でどこからでもアクセスできるので便利です。

上記の様な実装を行いたい場合には、まず app/build.gradle に以下のようなコードを追加します。
https://github.com/shige0501/buildbox-databinding/blob/master/app/build.gradle#L19

android {
    ・・・・・
    dataBinding {
        enabled = true
    }
}

その上で、レイアウト上でも定義を行います。
https://github.com/shige0501/buildbox-databinding/blob/master/app/src/main/res/layout/activity_main.xml#L2

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="net.buildbox.sample.buildbox_databinding.MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/message_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="初期メッセージ"/>
    </RelativeLayout>
</layout>

便利なので是非活用してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です