2016-01-23 67 views
0

我想問一下如何使用Retrofit從2個json文件中獲取數據。Android Retrofit - 如何從2個json文件中獲取數據

現在我有適用於一個URL的應用程序。

我的服務:

public interface TestService { 

     @GET(url1) 
     Call<Pojo> getArray(); 
} 

進出口使用RecyclerView

Call<Pojo> getCall = mTestService.getArray(); 

    getCall.enqueue(new Callback<Pojo>() { 
     @Override 
     public void onResponse(Response<Pojo> response, Retrofit retrofit) { 
      mRecyclerView.setAdapter(new TestAdapter(response.body())); 
     } 

     @Override 
     public void onFailure(Throwable t) { 

     } 
    }); 

,它工作正常,但我想文件從2個網址添加到RecyclerView。有任何想法嗎?也許分頁?從一個JSON加載數據後,加載第二個JSON?

回答

0

如果您需要依次顯示來自兩個端點的數據,請在滾動後將第二部分加載到RecyclerView的末尾。但是,當您需要合併數據時,最好使用RxJava和Observables將這兩個請求合併起來,然後再將它們提供給適配器。

改裝2已經支持使用呼叫適配器作爲觀察對象返回數據,請參閱this blog post以瞭解設置的詳細信息。您的服務應該是這樣的整合RxJava後:

public interface TestService { 
    @GET(url1) 
    Observable<Pojo> getArray1(); 

    @GET(url2) 
    Observable<Pojo> getArray2(); 
} 

之後,您可以使用合併操作在用戶創建TestAdapter前兩者結合調用的結果。使用合併時,您必須記住,首先返回的調用中的數據將成爲結果列表中的第一個。

getArray1().mergeWith(getArray2()).toList() 
    .subscribeOn(Schedulers.io()) 
    .observeOn(AndroidSchedulers.mainThread()) 
    .subscribe(new Subscriber<List<Pojo>>() { 
     @Override 
     public void onCompleted() { } 

     @Override 
     public void onError(Throwable e) { } 

     @Override 
     public void onNext(List<Pojo> pojoList) { 
      mRecyclerView.setAdapter(new TestAdapter(pojoList)); 
     } 
    }); 

正如你所看到的,你的TestAdapter需要在Pojo對象的列表上進行操作。由於RxJava起初很難理解,我建議你閱讀danlew的Grokking RxJava series

相關問題