В классе репозитория, как передать состояние запроса из запроса на модернизацию в ViewModel с использованием LiveData? - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь сделать простое приложение для Android, которое использует компоненты архитектуры Google.Приложение извлекает данные из API, используя модернизацию.Он также использует rxjava для получения запроса на модификацию от основного потока.Я работал над этим в течение нескольких дней, и я столкнулся с дорожным блоком.Я не могу понять, как передать состояние запроса из хранилища в ViewModel.Поскольку я делаю запрос в наблюдаемой rxjava, а наблюдаемая является асинхронной, я не могу найти способ назначить состояние запроса для 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, поскольку наблюдаемая является асинхронной.В настоящее время у меня есть метод в репозитории, который возвращает LiveData, который я затем наблюдаю в моем ViewModel, но моя переменная LiveData возвращает ноль, поскольку я назначаю его в наблюдаемой, которая является асинхронной.Таким образом, переменная LiveData присваивается после завершения функции.Может кто-нибудь мне помочь?Я искал в интернете последние несколько дней, но не могу найти ничего полезного.Спасибо за ваше время.

...