Как обновить MediatorLiveData при изменении двух живых данных? - PullRequest
0 голосов
/ 12 ноября 2019

Я работаю над приложением, в котором мне нужно сделать два сетевых вызова. Это делается следующим образом:

private val call1 = MutableLiveData<Boolean>()
private val call2 = MutableLiveData<Boolean>()
private val overallSuccess = MediatorLiveData<Boolean>()

fun init {
    overallSuccess.addSource(call1) { call1 ->
        if (!call1) {
           overallSuccess.value = call1
        }
    }
    overallSuccess.addSource(call2) { call2 ->
        if (!call2) {
           overallSuccess.value = call2
        }
    }
}

fun doNetworkCalls() {
    bookCollection = bookRepository.getBooks()
    authorCollection = authorRepository.getAuthors()
    call1.postValue(bookCollection.isNotEmpty)
    call2.postValue(authorCollection.isNotEmpty)
}

Мои репозитории книг и авторов возвращают пустые списки, если при вызове произошла ошибка. То, что я пытаюсь сделать, это только вывести «ложь» на живые данные общегоSuccess, когда оба call1 и call2 возвращаются и один (или оба) ложны. Выводите true только один раз, когда call1 и call2 возвращаются как true. Как бы я поступил так? То, как я это настроил выше, вызывает ложь, когда один или оба возвращают ложь, но не верно, если они оба возвращаются. Как бы мне получить общий доступ к «changeValue» только при возврате обоих вызовов?

...