2016-10-04 101 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。使用替代

回答