Androidの実装において、findViewByIdを使ってActivityやFragmentでViewを取得することはこれまでの通例ですが、正直面倒くさいです
実際に書いてみると下記のようになります
TextView textView = (TextView)findViewById(R.textView)
textView.setText("Test Text")
var textView: TextView = findViewById(R.id. R.textView)
textView = "Test Text"
上記の通りViewが増えるたびにfindViewByIdが増えてしまいます。
今回ご紹介するビューバインディングではこの煩わしいコードを無くしてもっと便利にできます
ビューバインディングとは
ビューを操作するコードを簡単に記述できる機能です。
ビューバインディンを有効にすると、各レイアウトファイルごとにバインディングクラスが自動で生成されます。
このクラスには実際のレイアウトファイルに記載されたIDを持つ各Viewへの参照を持っています
このバインディングクラスのViewへの参照をAcitvityやFragmentから呼び出すことでfindViewByIdを使ったViewの取得をしなくて済むようになります。
ビューバインディングの導入
追加するアプリ・モジュールのbuild.gradleに下記を記載します
導入はこれだけです
※日本語のAndroidDeveloperページではbuildFeaturesではなく、viewBindingとなっているので注意。viewBindingでの記載はもう古いようです
android {
...
buildFeatures {
viewBinding = true
}
}
これだけで上記のTextViewの呼び出しが下記のように簡単になります
binding.textView.setText("Test Text")
binding.textView = "Test Text"
※上記のようなコードにするにはAcitivityやFragmentで少しだけ準備が必要です
実際の使用方法は下記Developerを参照するとわかりやすいです
https://developer.android.com/topic/libraries/view-binding?hl=ja#usage
※注意点
Developerでは「result_profile.xml 」というレイアウト ファイルがあることを前提としています
下記のようにBindingクラスはレイアウトの名前を元に生成されます。
使用する際はご自身の作成したレイアウト名に置き換えるようにしてください
AndroidDeveloperの例
result_profile.xml → ResultProfileBinding
例.)
main_fragment.xml → MainFragmentBinding
参照