Retrofit2,Rxjava中的筛选器列表响应

问题描述 投票:1回答:2

我想使用此Observable在FeedDetails上使用特定字符串过滤响应列表

Observable<List<FeedsDto>> listObservable = mApiService.getFeedDetails(feedsDto);
subscribe(listObservable, feedsDtoList -> view.getAllFees(feedsDtoList), throwable -> Log.e(tag, "getFeedDetails", throwable));

FeedsDto如下

    @SerializedName("EntryId")
    private int mEntryId;
    @SerializedName("EntryTypeId")
    private int mEntryTypeId;
    @SerializedName("FeedDetails")
    private String mFeedDetails;
    @SerializedName("FullName")
    private String mFullName;
    @SerializedName("Id")
    private int mId;
android retrofit2 rx-java2
2个回答
3
投票
listObservable
    .flatMapIterable(it -> it)
    .filter(feedDto -> feedDto.feedDetails().equals("string_to_filter_by"))
    .subscribe(...);

flatMapIterable - >从FeedDto对象列表转换为单独的FeedDto对象filter - >通过一些String / feedDetails组合过滤它们

这意味着当你最后订阅时,你将不再拥有List<FeedDto>,而只是一个FeedDto对象流。


3
投票

试试这个:

 mApiService.getFeedDetails(feedsDto)
    .flatMap(Observable::fromIterable)
    .filter(result -> result > 0) // Whatever you want to filter
    .toList()
    .toObservable()
    .subscribe(...);
© www.soinside.com 2019 - 2024. All rights reserved.