android - Kotlin list.map with if 改变返回值

标签 android kotlin

我在一个 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/

相关文章:

android - 使用 onCreateContextMenu 从 listView 复制文本

android - 如何在 Kotlin for Android 客户端上使用 protobuf 生成 gRPC 代码?

java - 如何使用自定义按钮(不是 Android 设备按钮)控制音量

android - OpenGL fragment 着色器正在移动对象

java - android相机 Intent 不返回任何数据

android - 如何解决 Android 中的重复类错误

kotlin - Kotlin 中 Any 类型和泛型的区别

android - java.lang.IllegalArgumentException : Illegal character (U+0) in writing xml file android 异常

java - 如何在 ARCore Sceneform 中为节点创建动画(更改缩放、旋转或位置)?

android - Android中的 "preconcat"矩阵是什么意思?