RxJava 2 - 列表对象内的过滤器列表

时间:2018-03-12 11:34:55

标签: android kotlin rx-java2

getData()会返回一个<ArrayList1> ,里面有很多对象,也是ArrayListX。我想只接收那些非空的cars(ArrayList)。当然,results.filter { cars -> cars.size > 0 }将不起作用,因为它返回列表而不是布尔值。如何以正确的方式实现这一目标?附:还在学习rxjava,哈哈

val disposable = repository.getData()
                    .observeOn(AndroidSchedulers.mainThread())
                    .filter { results ->
                        results.filter { cars -> cars.size > 0 }
                    }
                    .subscribe({ searchResults ->
                       ...
                    }, { _ ->
                        ...
                    })
            compositeDisposable.add(disposable)

1 个答案:

答案 0 :(得分:1)

这对我有用:

import io.reactivex.Single
import java.util.*

fun main(args: Array<String>) {

    val source = Single.just(Arrays.asList(
            Collections.emptyList(),
            Arrays.asList(1, 2),
            Collections.emptyList(),
            Arrays.asList(3, 4, 5)
    ));

    // Single<List<(Mutable)List<Int!>!>!>!
    val output = source.map({ items -> items.filter({ !it.isEmpty()} )})

    output.subscribe({ res -> System.out.println(res) })
}

打印

[[1, 2], [3, 4, 5]]