使用一个人为的例子来说明我的问题,我有一个复合对象类型的 Observable:
Observable<Category>
public class CategoryPayload {
public List<Category> categories;
// other meta data and getters
}
public class Category {
public Integer id;
// other meta data and getters
}
我需要根据 id 过滤掉某些类别,所以我最终会做类似的事情:
Observable<CategoryPayload> categoryObservable = service.getCategoryPayload();
// use flatMap to transform the Observable into multiple
mSubscription.add(
categoryObservable.flatMap(new Func1<CategoryPayload, Observable<Category>>(){
public Observable<Category> call(CategoryPayload categoryPayload){
return Observable.from(categoryPayload.categories);
}
}).filter(new Func1<Category, Boolean>(){
public Boolean call(Category category){
return category.id != SOME_BANNED_CATEGORY_ID;
}
}).toList())
.subscribe(mObserver);
请原谅人为的代码。我真的只是想了解是否正确使用 RX 来展平我的 observable 然后以我上面所做的方式对其进行过滤。