我正在构建一个Android应用程序,它使用特定参数收集数据。该应用程序是用Java / Kotlin开发的,基于RxJava。
class Cars constructor(val carsData: CarsData) {
fun getCars(): Observable<List<Car>> {
return listOf(
carsData.getCar("toyota")
.flatMap { Observable.from(it)}
.distinct { it.productId }
.toSortedList()
,
carsData.getCar("chevrolet")
.flatMap { Observable.from(it)}
.distinct { it.productId }
.toSortedList(),
carsData.getCar("cadillac")
.flatMap { Observable.from(it)}
.distinct { it.productId }
.toSortedList())
}
我想要返回Observable<List<Car>>
。对getCar
的任何调用都会返回Observable<List<Car>>
。默认情况下,我遇到了一个问题,因为我要返回Observable<List<Observable<List<Car>>>
,因为我需要首先提取数据以合并所有内容。
任何想法,如何让它有效?上面的代码不起作用,因为它抱怨类型问题,我认为它与Observable的混合有关。
感谢您的帮助。
答案 0 :(得分:3)
如果您想要返回按顺序发出这3个列表的Observable
,可以使用Observable.merge
或Observable.concat
,具体取决于您是否要保留其顺序:
return Observable.merge(
carsData.getCar("toyota")
.flatMap { Observable.from(it) }
.distinct { it.productId }
.toSortedList(),
carsData.getCar("chevrolet")
.flatMap { Observable.from(it) }
.distinct { it.productId }
.toSortedList(),
carsData.getCar("cadillac")
.flatMap { Observable.from(it) }
.distinct { it.productId }
.toSortedList()
)