Я знаю, что было задано много похожих вопросов, но я не могу найти решение, которое бы отвечало моим потребностям.Я новичок в RxJava, и у меня возникла досадная задача - принять на вооружение требование, которое оказалось довольно сложным.
Мое намерение:
- Я делаю один вызов repository.getDynamicScreenContent () , который возвращает наблюдаемый список объектов DynamicUtterance.
- Для каждого наблюдаемого элемента в ответе я делаю дополнительный вызов repository.updateDynamicUtteranceView , который возвращает больше данных, которые затем могут быть объединены с данными из предыдущего вызоваи кешируется в моей БД.
Код, который я до сих пор имел, который, наконец, не дает мне проблем с синтаксисом (по крайней мере), но все же попадает в окончательный перехват ошибок:
fun getAllDynamicUtterances(): LiveData<ArrayList<DynamicUtterance>>
{
var uttList: ArrayList<DynamicUtterance>? = null
disposable?.add(
repository.getDynamicScreenContent().map { items ->
items.uttSets.map { //items = DynamicUtterance
var utt: DynamicUtterance? = null
utt?.makeUtteranceFromScreenContentResponse(it)
insertDynamicUtterance(utt!!)
repository.updateDynamicUtteranceView(utt,"hi").map{ //it: SelectionStringResponse
utt.assignSelectionStrings(it)
uttList?.add(utt)
//how do i add to all dynamic values?
}
}
}.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).subscribe ({
allDynamicUtterances?.value = uttList
},{
Log.e("errorHandle",it.toString()) //gets caught here
})
)
return allDynamicUtterances!!
}
Очевидно, что бит подписки размещен неправильно, но везде, где я его размещаю (а также просто удаляю), происходит ошибка.