Мне нужно отфильтровать список каналов, содержимое которого пусто, я попытался с оператором фильтра, затем я не смог вернуть «FeedsResponse» обратно, не уверен, как отфильтровать список и вернуть FeedsResponse.
// Tried with Filter Operator
public Single<ApiResponse> getFeeds() {
final FeedsResponse response = new FeedsResponse();
return feedServiceService.getFeedList()
.flatMap(new Function<FeedsResponse,
ObservableSource<List<Feed>>>() {
@Override
public ObservableSource<List<Feed>> apply(
FeedsResponse feedsResponse) throws Exception {
response.setTitle(feedsResponse.getTitle());
return Observable.just(feedsResponse.getFeed());
}
})
.flatMap(Observable::fromIterable)
.filter(new Predicate<Feed>() {
@Override
public boolean test(Feed feed) throws Exception {
return !(feed != null && (
TextUtils.isEmpty(feed.getTitle())
&& TextUtils.isEmpty(feed.getDescription())
&& TextUtils.isEmpty(feed.getImageHref())));
}
})
.toList().map(new Function<List<Feed>, ApiResponse>() {
@Override
public ApiResponse apply(List<Feed> feeds) throws Exception {
response.setFeed(feeds);
return new ApiResponse(Status.SUCCESS,response,null);
}
});
}
--------- ?????
а) как лучше вернуть ответ на подачу, я должен создать конечный объект снаружи и установить значения в итоговой карте, есть ли лучший способ
б) как справиться, еслисписок пуст
---------???????
//////////////////////
public class FeedRepository {
private final FeedService feedServiceService;
public Observable<FeedsResponse> getFeeds() {
return feedServiceService.getFeedList();
}
}
//-------------
//Rest API
Observable<FeedsResponse> getFeedList();
//-------------
//POJO
FeedsResponse {
@SerializedName("title")
@Expose
private String title;
@SerializedName("rows")
@Expose
private List<Feed> feed = null;
}
public class Feed {
@SerializedName("title")
@Expose
private String title;
@SerializedName("description")
@Expose
private String description;
@SerializedName("imageHref")
@Expose
private String imageHref;
}
//-------------