android - Kotlin list.map with if 改变返回值
问题描述
我在一个 android 应用程序上,我正在尝试修改此代码,以便仅在满足条件时添加到 DataItem 列表(DataItem.PlanificacionItem(it).planificacion.diaP == 0)。如果我if
在地图内放一个,它会从List<DataItem>
to改变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:
推荐阅读
- windows - exec,Cmd.Run() 没有正确运行带参数的命令
- java - 扫描仪正在跳过文本文件行
- c# - C#:添加新检查而不影响现有检查
- swiftui - 返回某些视图时,表达式的类型不明确
- node.js - 如何将我的项目部署到 Heroku 中,其中包括前端的车把和 mondoDB 数据库以及后端的 nodejs
- swift - UIViewRepresentable 不更新绑定到 ObservedObject 属性?
- php - 引号和单引号正在更改为字符
- python - raise ValueError(f"orient '{orient}' 不理解") Python
- gitlab - 如何使用 GitLab 和 AWS 更正 Terraform 中的隐藏秘密
- google-cloud-platform - Google Cloud SDK 引发可达性检查失败错误