【发布时间】:2019-07-17 11:19:27
【问题描述】:
我是 RxJava2 及其方法的新手。 我需要更改从 Observable 发出的数据类型。
说,我有一个像下面这样的数据类。
data class SomeClass (val type: String)
一个 API 返回 ArrayList<SomeClass>,这在使用 RxJava2 和 RxAndroid 的当前实现上运行良好。
apiService.getPrice(code)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(singleObserver)
我必须更改/转换来自ArrayList<SomeClass> to HashMap<someClassObject.type, ArrayList<SomeClass>> 的数据。我正在尝试运营商来实现这一点,但没有运营商允许更改正在观察的数据类型。
转换基于:
Consumer<ArrayList<SomeClass>> { response ->
val mapped = HashMap<String, ArrayList<SomeClass>>()
response.forEach { someClassObj ->
val type = someClassObj.type!!
if (mapped.containsKey(type)) {
mapped[district]?.add(someClassObj)
} else {
val list = ArrayList<SomeClass>()
list.add(someClassObj)
mapped[type] = list
}
}
}
我正在考虑使用两个不同的 observable,其中 Observable data #2 基于 Observable data #1 (ArrayList<SomeClass>) 的响应。但是,我不确定这是否有效。有没有更好或更有效的方法来实现这一目标?
【问题讨论】:
-
尝试
map(Function)使用您显示的代码 sn-p。 -
试过 map(),但没有用。
-
“不工作”对诊断您的问题没有多大帮助。请提供更多详细信息,说明您是如何尝试的以及结果如何:编译错误、打印的数据错误等。
-
@akarnokd:是的,我的错。对不起,我应该提供更多信息。
标签: android reactive-programming rx-java2 rx-android reactivex