在存储库类中,如何使用LiveData将请求状态从翻新请求传递到ViewModel?

时间:2018-09-19 17:25:35

标签: android kotlin rx-java android-livedata android-viewmodel

我正在尝试制作一个使用Google架构组件的简单android应用。该应用程序使用改造从Api中提取数据。它还使用rxjava从主线程获取改造请求。我已经为此工作了几天,但遇到了障碍。我不知道如何将请求状态从存储库传递到ViewModel。由于我是在rxjava observable中执行请求,而observable是异步的,因此我无法找到一种将请求状态分配给LiveData的方法。我有一个密封的类来跟踪请求状态:

sealed class Outcome<T> {
    data class Progress<T>(var loading: Boolean) : Outcome<T>()
    data class Success<T>(var data: T) : Outcome<T>()
    data class Failure<T>(val e: Throwable) : Outcome<T>()

    companion object {
        fun <T> loading(isLoading: Boolean): Outcome<T> = Progress(isLoading)

        fun <T> success(data: T): Outcome<T> = Success(data)

        fun <T> failure(e: Throwable): Outcome<T> = Failure(e)
    }
}

但是我无法找到一种将请求状态分配给LiveData的方法,因为observable是异步的。我当前在存储库中有一个返回LiveData的方法,然后我在ViewModel中观察到了该方法,但是我的LiveData变量返回了null,因为我是在异步的可观察对象中为其分配的。因此,在函数返回后将分配LiveData变量。谁能帮我吗?过去几天我一直在搜索互联网,但找不到任何有用的信息。谢谢您的宝贵时间。

0 个答案:

没有答案