久々の更新です。
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>
便利なので是非活用してみてください。