Как установить список объектов фильтра на объект с помощью операторов RXjava - PullRequest
0 голосов
/ 28 октября 2018

Мне нужно отфильтровать список каналов, содержимое которого пусто, я попытался с оператором фильтра, затем я не смог вернуть «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;
}

//-------------
...