从DB获取ID列表并将它们传递给Retrofit界面

时间:2015-12-21 22:52:43

标签: android rx-java rx-android

我正在尝试传递一组ID以改进界面

 @GET("story")
 Observable<StoryCollectionEntity> storyCollection(
          @Query("feed_ids") Set<Long> feedIds // this is the ids i want to pass,
          @Query("page") int page);

从DB检索到的ID,应以逗号分隔传递给api,例如:1,2,4,..或只有一个值,如1或2

从DB中检索id我编写了以下代码:

//retrieve ids from DB
public Observable<Set<Long>> getFeedIdsFromDB() {
  return Observable.create(subscriber -> {
  Set<Integer> subscribedFeedIds = new HashSet<>();
     for (FeedEntity feed : FeedEntity.listAll(FeedEntity.class)){
        if (feed.isSubscribed()){
           subscribedFeedIds.add(feed.getFeedId());
        }
       }});
      } 

在rest存储库中,调用响应然后执行映射:

public Observable<StoryList> stories(int page) {
  return newsDataStore.storyEntityList(page)
   .map(StoryList -> this.mNewsEntityDataMapper.transform(StoryList));
 }

storyEntityList:

 @Override
 public Observable<StoryCollectionEntity> storyEntityList(final int page)   {
 return Observable.create(subscriber -> {
     this.mNewsCache.getFeedIdsFromDB()
    .flatMap(id ->this.restApi.storyCollection(id, page));
 });

遗憾的是,此代码对我不起作用。我不确定究竟是什么问题,因为我看到getFeedIdsFromDB()被调用后没有任何反应。换句话说,在最后一个Observable中没有进行映射。

0 个答案:

没有答案