Допустим, вы следуете архитектуре MVVM и имеете LiveData
в качестве наблюдаемого шаблона от ViewModel
до Activity
.Таким образом, вы можете сделать вашу переменную как LiveData
объект, выставляющий Activity
, как показано ниже:
class MyViewModel : ViewModel() {
// LiveData object as following
var someLiveData: LiveData<Any> = MutableLiveData()
fun changeItsValue(someValue: Any) {
(someLiveData as? MutableLiveData)?.value = someValue
}
}
А теперь на Activity
части вы можете наблюдать LiveData
, но для модификации вы можете вызвать методот ViewModel
как показано ниже:
class SomeActivity : AppCompatActivity() {
// Inside onCreateMethod of activity
val viewModel = ViewModelProviders.of(this)[MyViewModel::class.java]
viewModel.someLiveData.observe(this, Observer{
// Here we observe livedata
})
viewModel.changeItsValue(someValue) // We call it to change value to LiveData
// End of onCreate
}