У меня есть данные в локальной базе и данные с сервера. Я должен вывести сперва данные с локальной базы, если есть, иначе подождать данных от сервера. То есть, когда жду данных от сервера, я не должен скрывать ProgressBar
до тех пор, пока не получу данных или пустой список и только потом скрывать ProgressBar
и показать Empty State
(сообщение о пустом списке).
Проблема в том, когда я получаю пустой список из локальной базы, ProgressBar
скрывается и появляется Empty State
, а потом подгружаются данные с сервера.
Код, где эта реализация:
Observable.mergeDelayError(getDataFromLocal(), getDataFromServer())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread(), true)
.subscribe(transactions -> {
if (mView != null) {
mView.hideConnectingProgress();
mView.onTransactionsReceived(transactions);
}
}, throwable -> {
if (mView != null) {
mView.hideConnectingProgress();
if (throwable instanceof UnknownHostException) {
mView.showOfflineMessage();
}
}
}
)
Попробовал добавить Флаг типа isLocalData = true
в flatMap()
getDataFromLocal()
, а в flatMap()
getDataFromServer() isLocalData = false
.
В подписчике так:
if (transactions.size() > 0) {
mView.hideConnectingProgress();
mView.onTransactionsReceived(transactions);
} else {
if (!isLocalData) {
mView.hideConnectingProgress();
mView.onTransactionsReceived(transactions);
}
}
Но в этом решении Empty State
не появляется при получении пустого списка из локальной базы, когда интернета нет.
Вопрос:
Как реализовать получение getDataFromLocal()
, если тут пусто, то не скрывая ProgressBar ждать getDataFromServer(), но если нет интернета, показать Empty State
getDataFromLocal()
.
Понимаю все запутанно, и я что-то не понимаю. Бьюсь с эти 2 дня. Можете подсказать, как реализовать?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
когда достиг финальной части своего задания столкнулся с такой проблемой, что не могу собрать проект в полноценный jar файл, выдаёт ошибку...
У меня есть класс Company и 3 дочерних класса, которые наследуют методы из родительского класса, как получить 1 ArrayList со всеми значениями зарплат...