当我修改列表中对象的属性时,UI不会更新

我的代码是:

    @OptIn(ExperimentalFoundationApi::class)
    @Composable
    fun ContactCard(
    ) {
        var stateList = remember {
            mutableStateListOf<ListViewData>()
        }
        viewModel!!.recordRespListLiveData!!.observe(this) { it ->
            it.forEach {
                stateList.add(ListViewData(false, it))
            }
        }
        LazyColumn() {
            stateList.forEachIndexed { index, bean ->
                stickyHeader() {
                    Box(Modifier.clickable {
                        stateList[index].visible = true
                    }) {
                        ContactNameCard(bean.data.contact, index)
                    }
                }
                items(bean.data.records) { data ->
                    if (bean.visible) {
                        RecordItemCard(record = data)
                    }
                }
            }
        }
    }

当我单击该框时,可见设置为真,但RecordItemCard不显示,这是为什么?

推荐答案

要触发SnapshotList,您需要使用新实例添加、删除或更新现有项目.当前您正在更新现有项的可见属性.

如果ListViewData是来自数据类的实例,则可以这样做

stateList[index] = stateList[index].copy(visible = true)

Android相关问答推荐

如何自定义所选的NavigationBar项目?

Google Play测试应用程序Crash-java.lang.NoSuchFieldError:没有Lkotlinx/coroutines/CoroutineExceptionHandler类型的字段键

不能在LazyGrid-Jetpack Compose中使用填充最大宽度或填充父项最大宽度

在内部创建匿名对象的繁忙循环调用函数会产生开销吗?

在androidStudio中,如何使用带有ResolutionStrategy的ResolutionSelector而不是setTargetResolve()?

如何解决Gradle构建错误:java.lang.NoSuchMethodError

第一次使用onBackPressed()、NavigateUp()加载时MapView崩溃

在Jetpack Compose中,我可以配置动画以恒定的速度而不是恒定的时间运行吗?

Color.Transparent 和 Color.Unspecified 之间的区别

闪屏 API 无法在 Android 12 上运行(API 31、32)

在 compose 中做可变状态堆栈

通过 adb 解压并重新安装后 Android 应用程序崩溃

未找到 com.android.tools.build:gradle:7.4.0 的匹配变体

如何在 Jetpack Compose 中向图像视图添加对角色带?

处理程序 postDelayed 方法不起作用,kotlin 应用程序卡在启动画面上

在 Kotlin 客户端应用程序中发送 FCM 推送通知 - Firebase 云消息传递

Android Studio:如何添加应用程序质量洞察窗口以查看 Android Studio 中的 Crashlytics 数据?

如果我在网络请求中指定它们是否与判断网络功能相关

任何 IRCTC 的公共 API 来判断 PNR 状态和座位可用性?

无法再查看 Jetpack Compose 预览.无法实例化一个或多个类 (ComposeViewAdapter)