2016-10-04 49 views
3

我想结合5网络调用来获得则需要显示在一个单独的列表上的用户界面对象的列表:合并多个呼叫维持秩序

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

跟着一些教程结束了网页,我创建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。使用替代

回答