合并多个调用保留顺序

Merge multiple calls preserving order

我正在尝试组合 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
                        }
                    }
                });

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

使用concat()代替merge()

http://reactivex.io/documentation/operators/concat.html