Моя задача - загрузить элементы разных типов, затем отсортировать их по типам
и вернуть результаты пары:
type to items (for the type)
перенос на объект:
data class MyProWrap(val type: ProType, val profiles: ArrayList<ProImpl>)
поэтому после groupBy () я пытаюсь получить список элементов через group.toList () , а затем извлечь через blockingGet ()
myкод:
proRepo.loadUser(prefSource.userId)
.flatMap {
Flowable.fromIterable(it)
}
.groupBy { it.typePro}
.flatMap { group ->
group.map {
group.key to group.toList() //<- try collect result to list
}
}
.map {
MyProWrap(
type = it.first!!,
profiles = ArrayList(it.second.blockingGet()) //<- try extract result from Single via blocking get
)
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
result = it
}
}, {
Timber.e("Fail to load profiles. ${it.message}")
})
но получил ошибку:
java.lang.IllegalStateException: Only one subscriber allowed!
мой класс обёртки:
data class MyProWrap(val type: ProType, val profiles: ArrayList<ProItem>)
enum class ProType {
FIRST_TYPE,
SECOND_TYPE,
THIRD_TYPE
}
есть способ это исправить?