获取对象列表,对它们进行操作,然后使用rxjava将它们转换为对象列表

时间:2017-01-14 20:36:07

标签: android rx-java retrofit2

我有两个Retrofit请求A和B,其中一个取决于另一个,

A

null

    public Observable<List<Image>> getImages(double count) {
        return mService.getImages(count);
    }

第二个请求 B 采用imageId参数,我可以通过image.getId()

获取该参数

我需要做的就是:

  1. 获取图片列表。
  2. 获取每张图片的详细信息。
  3. 将每个Image和ImageDetails组合成第三个对象TheImage
  4. 返回Observable of object ofImage
  5. 如何使用Rxjava

    实现这样的目标

1 个答案:

答案 0 :(得分:0)

这是您的解决方案,如果您有任何疑问,请随时提出。

    Observable<List<TheImage>> listObservable = getImages(20)
            .flatMapIterable(images -> images) // gets individual image
            .flatMap(image -> getImageDetails(image.getId()) // gets image details
                    .map(imageDetails -> new TheImage(image, imageDetails))) // creates new object TheImage
            .toList(); // collects it to list

如果您在flatMap中订阅内部observable,则可以对getImageDetails进行并行调用:

            .flatMap(image -> getImageDetails(image.getId())
                    .map(imageDetails -> new TheImage(image, imageDetails))
                    .subscribeOn(Schedulers.io()), maxConcurrent)