RxJava2过滤器列表<Object>

Boo*_*per 7 java rx-java rx-android rx-java2

我正在尝试使用RxJava2过滤List,这样列表中的每个项目(对象)都应该通过验证检查,我得到的结果列表只包含通过该测试的项目.例如,如果我的Object具有以下结构,

class MyClassA {
    int value1;
    int value2;
}
Run Code Online (Sandbox Code Playgroud)

我想只获取value210 的项目列表.

我有一个API调用函数,它返回一个Observable of List,即Observable<List<MyClassA>>如下,

apiService.getListObservable()
    .subscribeOn(Schedulers.io)
    .observeOn(AndroidSchedulers.mainThread());
Run Code Online (Sandbox Code Playgroud)

我希望对输出进行过滤,所以我尝试.filter()在上面添加一个运算符,但它似乎需要一个Predicate<List<MyClassA>>而不仅仅是一个MyClassA我可以检查的对象,并且只允许其中的一个value2 == 10.

我对RxJava和RxJava2很新,看起来我在这里缺少一些基本的东西?

TIA

aka*_*okd 25

您可以展开列表,然后收集通过过滤器的条目:

apiService.getListObservable()
.subscribeOn(Schedulers.io)
.flatMapIterable(new Function<List<MyClassA>, List<MyClassA>>() {
    @Override public List<MyClassA> apply(List<MyClassA> v) {
        return v;
    }
})
.filter(new Predicate<MyClassA>() {
    @Override public boolean test(MyClassA v) {
        return v.value2 == 10;
    }
})
.toList()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)