対象読者
- ウィジェット特定で冗長なコード(findViewById)を書きたくない人
できるようになること
- findViewByIdによる冗長なウィジェット特定を卒業できる
手順
- build.gradleを以下のように編集する
android { compileSdk 32 // ここから buildFeatures { viewBinding true } // ここまでを追記する 省略・・・ }
- アクティビティファイルを開く
class MainActivity : AppCompatActivity() { // 追加ポイント1 private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 追加ポイント2 binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) }
- findViewByIdを利用せずにアクセスする方法
- Before
class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) val btnCurrent = findViewById<Button>(R.id.btnCurrent) btnCurrent.setOnClickListener { val txtResult = findViewById<TextView>(R.id.txtResult) txtResult.text = Date().toString() } }
- After
class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.btnCurrent.setOnClickListener { binding.txtResult.text = Date().toString() } }
まとめ
- view Bindingを使うとfindViewByIdを卒業できる