RxJava 2: How to filter items of infinite stream that emits "List<Item>"?

Viewed 373

I have an Observable that does never finish. It emits a List<Item>. I need to filter out some of those items every time it emits that list. Currently I have this as a solution:

mData.getItemsObservable() // Observable<List<Item>>
        .compose(...)
        .flatMapSingle(items -> Observable.fromIterable(items)
                .filter(item -> item.someCondition())
                .toList())
        .subscribe(items -> {
            // ...
        }, error -> {
            // ...
        });

Is this the best way to filter out some items? Is there a simpler (more readable) way to do the same?

I've tried this too, but it didn't emit anything:

mData.getItemsObservable() // Observable<List<Item>>
        .compose(...)
        .flatMap(Observable::fromIterable) // or like this: flatMapIterable(items -> items)
        .filter(item -> item.someCondition())
        .toList()
        .subscribe(items -> {
            // ...
        }, error -> {
            // ...
        });
1 Answers
Related