久々の更新です。
Androidの開発でよく利用される機能やライブラリを、一つ一つ紹介していくのも良いのではないかと思い、記事を書いていきたいと思います。
まず取り上げるのはData Bindingです。
サンプルはこちらにあるので、参考にしてください。
https://github.com/shige0501/buildbox-databinding
オブジェクトを取得して実装するときには、以下のようなコードを書きます。
TextView messageView = findViewById(R.id.message_view);
messageView.setText("テストメッセージ");
上記の例だとテキストビューひとつですが、複数のウィジェットに寄よって構成される画面では、上記のようなオブジェクトの取得処理はとても冗長となります。
Data Bindingを利用すると、レイアウト上で定義した内容から自動でコードが生成されるため、かなりシンプルなコードにすることが可能です。
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>
便利なので是非活用してみてください。