Android RxJava api调用扩展项列表和返回列表中的每个项

Android RxJava api调用扩展项列表和返回列表中的每个项,android,retrofit,rx-java,Android,Retrofit,Rx Java,我使用改型2,我正在学习RxJava。我从某处下载了一个项目列表。我想对每个项目进行api调用,并创建扩展项目的新列表。两个调用都返回一个可观察的。它看起来像这样: getItemsService.getItems() .concatMap(Observable::from) .map(item -> new ExtendedItem(item, someOtherService.getDetails(item.somedetail)))

我使用改型2,我正在学习RxJava。我从某处下载了一个项目列表。我想对每个项目进行api调用,并创建扩展项目的新列表。两个调用都返回一个可观察的。它看起来像这样:

getItemsService.getItems()
            .concatMap(Observable::from)
            .map(item -> new ExtendedItem(item, someOtherService.getDetails(item.somedetail)))
            .toList()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(activity);
详情服务:

public interface IGetDetailsService {
@GET(BuildConfig.GET_DETAILS_ENDPOINT)
Observable<Detail> getDetails(@Query("q") String someDetail);
公共接口IGetDetailsService{
@获取(BuildConfig.GET\u详细信息\u端点)
可观察的getDetails(@Query(“q”)字符串someDetail);
}


问题是getDetails返回一个可观察的,我不能用它来构造ExtendedItem。更改getDetails调用以返回对象在rxJava链中不起作用,我想这是因为它将结果返回给主线程。如何获取对象本身?我尝试了很多其他方法,但到目前为止没有任何效果。

您可以使用
flatMap
的一种变体:

...
            .concatMap(Observable::from)
            .flatMap(item -> someOtherService.getDetails(item.somedetail), (item, detail) -> new ExtendedItem(item, detail))
            .toList()
...