Я просто изучаю Rxjava в одном из своих приложений для Android и застрял в одном месте, честно говоря, я очень новичок в этой библиотеке, так что не волнуйтесь, если мой вопрос кого-то расстроит; -)
Итак, я пытаюсь получить доступ к базе данных комнат с помощью RxJava, где я возвращаю список наблюдаемых, как только я получаю этот наблюдаемый, я пытаюсь использовать оператор карты, чтобы получить список идентификаторов и снова запросить базу данных, которая сновавозвращает мне список наблюдаемых, но оператор карты ожидает, что список будет возвращен.Как я могу решить эту проблему, пожалуйста, предложите?
Ниже приведен фрагмент кода:
private void getAllPcbs() {
isLoading.setValue(true);
getCompositeDisposable().add(
getRepositoryManager().loadAllPcbDetails()
.flatMap((Function<List<PcbDetails>, ObservableSource<?>>) pcbDetails -> {
List<Long> pcbList = new ArrayList<>();
for (PcbDetails details : pcbDetails)
pcbList.add(details.getPcbId());
return getRepositoryManager().loadAllPcbs(pcbList);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onSuccess, this::onError)
);
}
private void onError(Throwable throwable) {
isLoading.setValue(false);
}
private void onSuccess(Object o) {
isLoading.setValue(false);
pcbList.setValue((List<Pcb>) o);
}
public interface DbHelper {
Observable<List<PcbDetails>> loadAllPcbDetails();
Observable<List<Pcb>> loadAllPcbs(List<Long> pcbIdList);
}