Проблема, как я полагаю, возникает из-за природы LiveData
. LiveData
значение Observable ViewHolder
просто выдаст только последнее обработанное значение.
Теперь я понимаю, что вы делаете одновременные вызовы, и в этом нет ничего плохого с этим. Если вы хотите сэкономить время выполнения в сети, то это путь к go. Однако, если вы хотите, чтобы этот параллелизм работал с вашим экземпляром LiveData
, и вы хотите, чтобы ваш LiveData
испускал все значения, которые он обрабатывает, как только параллельный метод успешно возвращает, тогда вы можете использовать LiveData
неправильно.
То, что вы ищете, это LiveData's Observable nature
. Вы получаете бесплатно lifecycle aware
часть, но опять же это не ваша обычная Observable
, а специальная, которая сохраняет только последнее значение.
В вашем случае, когда вы хотите обработать каждое значение, лучше использовать RxJava's Observable
. Вы также можете настроить его жизненный цикл, набрав subscribing & unsubscribing
в своем activity or fragment
. У вас так много операторов в RxJava
, что один из них наверняка вам поможет, пара, я думаю, это switchMap
и Map
.