2016-02-10 54 views
1

我開始使用RxAndroid的Rx,並希望通過它的API與Retrofit列出圖像。RxAndroid:合併多個電話

更新接口:

public interface ImageApi { 

    @GET("image") 
    Observable<ImageDto> getImage(@Query("id") final Integer id); 
} 

在這裏,我得到一個對象:

public void getImage(final Integer id, final Observer<ImageDto> observer) { 
    imageApi.getImage(id) 
      .subscribeOn(Schedulers.newThread()) 
      .subscribe(observer); 
} 

和方法來獲取列表圖像更復雜轉念一想。在這種情況下,列出了一個元素:

public void getImages(final List<Integer> ids, final Observer<List<ImageDto>> observer) { 
    Observable.from(ids).flatMap(new Func1<Integer, Observable<ImageDto>>() { 
     @Override 
     public Observable<ImageDto> call(Integer id) { 
      return imageApi.getImage(id); 
     } 
}).toList().subscribeOn(Schedulers.newThread()).subscribe(observer); 

明白我應該使用:

Observable.zip 

,但我不能老是如何實現。有人能幫助我嗎?

+0

Zip更適合連續請求。它看起來像你在正確的軌道上。你可以驗證每個圖像ID調用一次嵌套的getImage調用嗎? – davehenry

+0

你是對的,代碼是正確的。有時候因爲我的錯誤,我在列表中只有一個ID。不管怎樣,謝謝你。 有沒有辦法使嵌套呼叫更少? –

回答

0

代碼是正確的。我犯了一個錯誤,列表中只有一個ID。 已解決。