Android get view model in Activity and Fragment

First, make sure this dependency is included in the app gradle file.

implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'

Assume there is a view model called NfcViewModel.kt with the following code.

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

class NfcViewModel : ViewModel() {

    private val _text = MutableLiveData().apply {
        value = ""
    }
    val text: LiveData = _text

    fun setText(message: String) {
        _text.value = message
    }
}

Import viewModels, get reference of NfcViewModel, and set data on the NfcViewModel by calling a function from this view model.

import androidx.activity.viewModels

private val nfcViewModel: NfcViewModel by viewModels()

nfcViewModel.setText("Hello World!")

Import activityViewModels, get the reference for this ViewModel, and listen for data from the property text of this view model.

import androidx.fragment.app.activityViewModels

private val nfcViewModel: NfcViewModel by activityViewModels()

val textView: TextView = binding.editMessage
nfcViewModel.text.observe(viewLifecycleOwner) {
  textView.text = it
}

Search within Codexpedia

Custom Search

Search the entire web

Custom Search