Retrofit2 ,Rxjava 中的过滤列表响应

Filter List response in Retrofit2 ,Rxjava

我想使用此 Observable

过滤 FeedDetails 上具有特定字符串的响应列表
Observable<List<FeedsDto>> listObservable = mApiService.getFeedDetails(feedsDto);
subscribe(listObservable, feedsDtoList -> view.getAllFees(feedsDtoList), throwable -> Log.e(tag, "getFeedDetails", throwable));

FeedsDto as below

    @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;

试试这个:

 mApiService.getFeedDetails(feedsDto)
    .flatMap(Observable::fromIterable)
    .filter(result -> result > 0) // Whatever you want to filter
    .toList()
    .toObservable()
    .subscribe(...);
listObservable
    .flatMapIterable(it -> it)
    .filter(feedDto -> feedDto.feedDetails().equals("string_to_filter_by"))
    .subscribe(...);

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

这确实意味着当您最后订阅时,您将不再有 List<FeedDto>,而是只有 FeedDto 个对象的流。