我在一个 android 应用程序上,我正在尝试修改此代码,以便仅在满足条件时添加到 DataItem 列表 (DataItem.PlanificacionItem(it).planificacion.diaP == 0)。如果我放一个 if
在 map 内部,它从 List<DataItem>
变为至 List<Any>
如果我放一个 else {null}
然后我收到以下错误:kotlin.NoWhenBranchMatchedException
fun addHeaderAndSubmitList(list: List<PlaniFicacion>?) {
adapterScope.launch {
val items = when (list) {
null -> listOf(DataItem.Header)
else -> listOf(DataItem.Header) + list.map {if (DataItem.PlanificacionItem(it).planificacion.diaP == 0) {
DataItem.PlanificacionItem(it) } else {null}} + listOf(DataItem.Header_2)}
withContext(Dispatchers.Main) {
submitList(items)
}
}
}
提前致谢
最佳答案
你需要使用 list.filterNot(it -> it.planificacion.diaP == 0) 而不是 list.map:
关于android - Kotlin list.map with if 改变返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59016089/