[英]Observable Lists merge to a single observable List in Kotlin
I am building an Android app which gathering data with a specific argument. 我正在构建一个Android应用程序,该程序使用特定的参数收集数据。 The app is developed in Java/Kotlin and based on RxJava.
该应用程序是使用RxJava在Java / Kotlin中开发的。
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())
}
I want to return an Observable<List<Car>>
. 我想返回一个
Observable<List<Car>>
。 Any call to getCar
is returning an Observable<List<Car>>
. 对
getCar
任何调用都将返回Observable<List<Car>>
。 By default, I have an issue because I am returning an Observable<List<Observable<List<Car>>>
because I need to extract the data first to merge everything. 默认情况下,我有一个问题,因为我要返回
Observable<List<Observable<List<Car>>>
因为我需要先提取数据以合并所有内容。
Any idea, how to make it works? 任何想法,如何使其起作用? the code above is not working, because it's complaining about type issue and I assume it's linked to the mix of Observable.
上面的代码无法正常工作,因为它抱怨类型问题,并且我认为它与Observable混合在一起。
Thanks for your help. 谢谢你的帮助。
If you want to return an Observable
that will emit these 3 lists in sequence, you can use Observable.merge
or Observable.concat
depending on whether you want to preserve their order: 如果要返回一个将按顺序发出这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()
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.