と仮定あなたが説明するように、あなたが機能を持っている:
Observable<List<A>> getAList()
と
Observable<B> getB(Long id)
基本的には単一の要素にリストを切り離すためにObservable.from
方法を利用するために必要な、そしてもちろんのObservable.flatMap
へ変換Observable
のです。
A
のリストからB
のリストを取得するヘルパー関数を作成します。
public Observable<List<B>> getBFromAList(List<Long> idList) {
return Observable.from(idList)
.flatMap(new Func1<Long, Observable<B>>() {
@Override
public Observable<B> call(Long id) {
return getB(id);
}
})
.toList();
}
と主な機能:
public Observable<List<Details>> getDetailsList() {
return getAList()
.flatMap(new Func1<List<A>, Observable<A>>() {
@Override
public Observable<A> call(List<A> aList) {
return Observable.from(aList);
}
}).flatMap(new Func1<A, Observable<Details>>() {
@Override
public Observable<Details> call(A a) {
return getBFromAList(a.idList)
.zipWith(Observable.just(a), new Func2<List<B>, A, Details>() {
@Override
public Details call(List<B> bs, A a) {
Details details = new Details();
details.a = a;
details.listOfB = bs;
return details;
}
});
}
}).toList();
}
素晴らしい、感謝を!そのジップが鍵だった。 – Francesc