RxJava:在对象内部拆分列表,执行一些操作,然后将修改后的列表组合回原始容器对象

时间:2015-06-22 13:02:46

标签: android retrofit rx-java

我有一个RetroFit服务调用,它将响应作为Observable返回。在响应中,有一个项目列表,我使用flatMap进行其他服务调用以向响应中添加一些数据。我是最终返回的Observable是使用更新列表发出原始邮件的那个。在zip运算符之后,我留下Observable<BrowseResult>,但我需要将原始响应结合起来,以便我有一个Observable<BrowseRespose>。我查看了collectconcat运算符,但无法弄清楚如何将其应用于我的问题。有关运营商使用的任何建议吗?

protected Observable<BrowseResponse> buildUseCaseObservable() {
    BrowseQuery.Builder builder = new BrowseQuery.Builder()
            .start(mStartIndex);

    return mBrowseApi.getMultimedia(builder.build())
            .flatMap(response -> Observable.from(
                    response.getResultsWrapper().getResult()))
            .flatMap(result -> {
                Observable<MultimediaObject> imageObjectObservable =
                        mMultimediaApi.getImageByEntitlement(result.getEid(), true);
                Observable<BrowseResult> browseResultObservable = Observable.just(result);
                return Observable.zip(browseResultObservable, imageObjectObservable,
                        (browseResult, imageObject) -> {
                            result.setImageUrl(imageObject.getAuthenticatedStoreUrl());
                            return result;
                        }
                );
            });
}

0 个答案:

没有答案