java - 合并多个调用保留顺序

标签 java android rx-java rx-android

我正在尝试组合 5 个网络调用来获取所需的对象列表,然后将其显示在 UI 上的单独列表中:

  • 苹果
  • 香蕉
  • 橘子
  • 新西兰人

按照网络上的一些教程,我创建了 5 个 Observables 并随后合并它们的发射:

Observable<FruitResponse> apples=
                _fruits.getApples(store_id)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread());
...
Observable<FruitResponse> pears =
                _fruits.getPears(store_id)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread());

 List<Observable<FruitResponse>> observables = new ArrayList();
        observables.add(apples);
        observables.add(bananas);
        observables.add(oranges);
        observables.add(kiwis);
        observables.add(pears);

        Observable
                .merge(observables)
                .toList()
                .single()
                .subscribe(new Observer<List<FruitResponse>>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(List<FruitResponse> list) {

                        ArrayList<Fruit> fruit_list = new ArrayList<Fruits>();
                        for (FruitResponse f : list) {
                           fruit_list.get(0).getName()); // -- always different
                        }
                    }
                });

问题是每次执行代码时发出的对象顺序都不同,我需要按照上述特定顺序获取列表,因此我会知道每个对象与什么相关(苹果列表或bananas 等)并能够正确地将其推送到 Adapter

最佳答案

关于java - 合并多个调用保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39863002/

相关文章:

JavaFx jar 文件双击无法打开当前文件 (Mac)

java - 如何在 Java 中使用 Linux 共享库?

java - 将 ArrayList<ArrayList<String>> 转换为 ArrayList<ArrayList<Integer>>

Android:更新文件上传的进度条

java - Android 单个观察者,在不同的类中有多个订阅者

java - 如何比较 LocalDate 和 Calendar 类的对象?

android - 如何使我自己的小部件在 XML 布局文件中使用

android - 即使我在 .bashrc 中设置了 CHROME_EXECUTABLE,Flutter doctor 也无法在 android studio 中找到 CHROME_EXECUTABLE

android - 使用改造和 Rx android 进行单元测试

java - 你如何使用 RxJava Observables 进行延续?