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