Simple Data Binding

1. In app/build.gradle, add the following code:

android {
  ...
  dataBinding {
    enabled = true
  }
}

Also it can be

android {
  ...
  buildFeatures {
    dataBinding = true
  }
}

2. Add an extra layout in layout xml file.

Before:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:... android:...>
  ...
</androidx.constraintlayout.widget.ConstraintLayout>

After:

<layout xmlns:...>
  <androidx.constraintlayout.widget.ConstraintLayout android:...>
    ...
  </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

3. Use data binding in Activity.

Before:

private lateinit var button: Button

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  button = findViewById(R.id.control_button)
  button.setOnClickListener { ... }
}

After:

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
  binding.controlButton.setOnClickListener { ... }
}