首页 > 解决方案 > 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)
            }
        }
    }

提前致谢

标签: androidkotlin

解决方案


您需要使用 list.filterNot(it -> it.planificacion.diaP == 0) 而不是 list.map:


推荐阅读