Using ViewModel
and LiveData
in Kotlin Android apps simplifies UI-related data handling and makes your code lifecycle-aware and more robust. ViewModel
helps store and manage UI-related data in a lifecycle-conscious way, while LiveData
allows UI components to observe data changes without manual lifecycle handling.

These components are part of Android’s Jetpack Architecture Components, recommended for building modern, maintainable Android apps.
Here’s how you can implement ViewModel and LiveData in your Kotlin project:
Step 1: Add Dependencies
Ensure you include the following in your build.gradle (Module)
:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.7.0"
Step 2: Create the ViewModel
class MainViewModel : ViewModel() { private val _counter = MutableLiveData<Int>().apply { value = 0 } val counter: LiveData<Int> = _counter fun incrementCounter() { _counter.value = (_counter.value ?: 0) + 1 } }
Step 3: Use ViewModel in Activity
class MainActivity : AppCompatActivity() { private lateinit var viewModel: MainViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val counterTextView: TextView = findViewById(R.id.counterTextView) val incrementButton: Button = findViewById(R.id.incrementButton) viewModel = ViewModelProvider(this).get(MainViewModel::class.java) // Observe LiveData viewModel.counter.observe(this, Observer { count -> counterTextView.text = "Counter: $count" }) incrementButton.setOnClickListener { viewModel.incrementCounter() } } }
This approach ensures your data survives configuration changes like screen rotations and keeps your UI reactive and clean.
For additional insights, check out the official Android ViewModel documentation.