This is my note for Udemy lesson: Advanced Android Bootcamp 2024.
1. Set up Data Binding
See this note
2. Set up ViewModel
See this note
3. Edit ViewModel
class MainActivityViewModel: ViewModel() { private val _count = MutableLiveData(0) val count: LiveData<Int> get() = _count fun add() { _count.value = _count.value?.plus(1) } }
4. Edit activity_main.xml
<layout ...> <data> <variable name="viewModel" type="com.xxx.xxx.MainActivityViewModel" /> </data> <androidx.constraintlayout.widget.ConstraintLayout ...> ... <TextView ... android:text-"@{viewModel.count.toString()}" /> <Button ... android:onClick="@{() -> viewModel.add()}" /> ... </androidx.constraintlayout.widget.ConstraintLayout> </layout>
5. In MainActivity, Pass the ViewModel to xml
override fun onCreate(savedInstanceState: Bundle?) { ... binding = DataBindingUtil.setContentView(this, R.layout.activity_main) viewModel = ViewModelProvider(this)[MainActivityViewModel::class.java] binding.viewModel = viewModel binding.lifecycleOwner = this }