Ich benutze Retrofit 2 und ich lerne RxJava. Ich lade eine Liste von Gegenständen von irgendwo herunter. Ich möchte für jedes Element einen API-Aufruf erstellen und eine neue Liste erweiterter Elemente erstellen. Beide Aufrufe geben ein Observable zurück. Es sieht etwa so aus:RxJava api Anruf für jeden Artikel in der Liste und Rückkehrliste der erweiterten Artikel
getItemsService.getItems()
.concatMap(Observable::from)
.map(item -> new ExtendedItem(item, someOtherService.getDetails(item.somedetail)))
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(activity);
Die Details Service:
public interface IGetDetailsService {
@GET(BuildConfig.GET_DETAILS_ENDPOINT)
Observable<Detail> getDetails(@Query("q") String someDetail);
}
Das Problem ist, dass getDetails eine beobachtbare zurück und ich kann es nicht ExtendedItem zu konstruieren, verwenden. Das Ändern des getDetails-Aufrufs, um ein Objekt zurückzugeben, funktioniert in der rxJava-Kette nicht, da das Ergebnis an den Hauptthread zurückgegeben wird. Wie bekomme ich das Objekt selbst? Ich habe viele andere Dinge ausprobiert, aber bisher funktioniert nichts.