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)