Как вывести () результаты LiveData в существующий объект LiveData? - PullRequest
2 голосов
/ 07 ноября 2019

Пример сопрограммы LiveData в официальных документах для Android дает следующий пример с использованием emit():

val user: LiveData<User> = liveData {
    val data = database.loadUser() // loadUser is a suspend function.
    emit(data)
}

Каждый пример emit(), который я видел, включая этот Учебник ProAndroidDev создает новый объект LiveData при использовании emit(). Как я могу получить LiveDataScope от LiveData объекта, который уже был создан и emit() значения для него? Например,

class MyViewModel : ViewModel() {
    private val user: MutableLiveData<User> = MutableLiveData()

    fun getUser(): LiveData<User> {
        return user
    }

    fun loadUser() {
        // Code to emit() values to existing user LiveData object.
    }

Большое спасибо, и вся помощь очень ценится!

1 Ответ

0 голосов
/ 07 ноября 2019

Что-то вроде

fun loadUser() {
     user.value = User()
}

Слушайте его через

 myViewModel.getUser().observe(this, EventObserver { user ->
     // do something with user
 })

Надеюсь, это поможет

...