我正在尝试传递一组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中没有进行映射。