【发布时间】:2021-10-13 10:18:23
【问题描述】:
您好,我在 ViewModel 类中分别从列表中发出每个项目,以对返回布尔值的每个项目的字符串执行一些验证,然后我更新每个项目中的布尔值并返回列表。但我无法更新 List 中的另一个参数,原因将是Throwable.stacktrace()。
在 ViewModel 中:
fun validateList(list: List<TestModel>): Single<List<TestModel>> {
return Observable.fromIterable(list)
.toFlowable(BackpressureStrategy.LATEST)
.map { it.jsonString }
.map { it?.let { VerifiableObject(it) } ?: throw IllegalStateException("Json must not be null") }
.flatMapSingle { validate() }
.toList()
.map {
list.mapIndexed { index, testModel ->
(if (it[index] != null) {
//Updating boolean value here
testModel.isVerified = it[index].toString()
} else throw Exception("ERROR")); testModel
}
}
}
在片段中:
viewModel. validateList(arrayList)
.doFinally {
showLoading(false)
}
.asyncToUiSingle()
.subscribe({
//Updating UI
adjustCard(it)
}, {
it.printStackTrace()
})
.addTo(disposables)
测试模型:
data class TestModel(
val title: String,
var isVerified: String? = null,
var reason: String? = null)
一旦任何项目获得假值,我需要在reason 字段中插入值,但有异常。如果您对此有任何想法,请帮助我。
【问题讨论】:
-
不抛出该错误,而是在
else子句中为TestModel.reason分配一些值怎么样? -
但在其他情况下不会出现错误。出错时直接调用订阅it.printstacktrace。
-
错误的堆栈跟踪是什么?
-
任何 API 调用错误。它不会陷入 else 子句中。这就是原因。我想要在 else 子句中,这样我就可以在 arraylist 的正确索引处更新具有动态错误的天线。
-
validate失败了吗?如果是这样,如何验证不依赖于当前项目?