如何在 RXJava 中过滤列表

How to filter list in RXJava

我正在尝试过滤从方法

中获得的 single<list<item>>
return getList(number)
    .filter { it -> it.age }  <--- problem
    .flatMap { addMoreData(it) }
    .map(mapper)

fun getList(number: Int): Single<List<Item>> {
    //do so things   
}

但在这种情况下我不能这样做,因为 it 有一个 List<Item> 而不是 Item。 我希望它在 RXJava 中(不想 运行 循环列表并过滤它的方法)

我该怎么做?

如果getList()returnsSingle<List<Item>>,那么我觉得flattenAsObservable就是你想要的:

return getList()
    .flattenAsObservable { it -> it } // Turns it into Observable<Item>
    .filter { it -> it.age }
    .flatMap { addMoreData() }
    .map(mapper)

你也可以使用.flatMapObservable { list -> Observable.fromIterable(list) },但它有点冗长。