Ellen Spertus
03/10/2020, 5:27 PMViewModel
for my state. Could anyone advise me how to adapt the https://developer.android.com/topic/libraries/architecture/viewmodel example to support the case where an argument needs to be passed into getUsers()
and through to loadUsers()
for it to do its job?
class MyViewModel : ViewModel() {
private val users: MutableLiveData<List<User>> by lazy {
MutableLiveData().also {
loadUsers()
}
}
fun getUsers(): LiveData<List<User>> {
return users
}
private fun loadUsers() {
// Do an asynchronous operation to fetch users.
}
}
I could store the information in an instance variable from getUsers()
and retrieve it from loadUsers()
, but that doesn’t seem very nice.
What I need to pass in is a Context
(to access assets and the package manager). I don’t cache the Context.Context
from a ViewModel
. Is this the way to go?
https://stackoverflow.com/a/56490520/631051Alan Donizete
03/10/2020, 5:47 PMEllen Spertus
03/10/2020, 5:48 PMMainActivity
gets destroyed?Adam Powell
03/11/2020, 2:02 AMContext
for? If you can keep the ViewModel working only in terms of Context
-insensitive data you can mix in the additional asset loading at the last mile with something like a .map {}
of the users LiveData from your exampleAnastasia Finogenova
03/11/2020, 2:17 AMAdam Powell
03/11/2020, 2:21 AMConfiguration
set up, so depending what kind of resources or assets you're loading, it's an easy way to get the wrong thingAndroidViewModel
base class to get it without additional injection if you're not already using a DI systemAnastasia Finogenova
03/11/2020, 2:23 AM