当前位置: 首页 > 知识库问答 >
问题:

Jetpack Compose没有用RxAndroid更新我的列表

和嘉澍
2023-03-14

我正在尝试使用RxAndroid Flowable的订阅者更新LazyColumn项目。我用于图像列表的状态变量简称为“列表”

这是我的懒惰列代码:

LazyColumn(
    modifier = Modifier
        .fillMaxWidth()
        .fillMaxHeight()
) {
    items(list) { image ->
        Text(text = image.title ?: "Title")
    }
}

例如,如果我运行此测试协程,列表将更新并显示正确数量的测试图像:

GlobalContext.run {
            val testList = SnapshotStateList<Image>()
            for (i in 1..100) {
                testList.add(Image(i, null, null, null, null))
            }
            list = testList
        }

但是,如果我使用对Flowable的订阅尝试相同的方法,它会更新变量值,但不会触发重新编译。这是我的代码:

val observer = remember {
    disposable.add(
        viewModel.imagesObservable().subscribe(
            { images ->
                val snapList = SnapshotStateList<Image>()
                images.forEach {
                    snapList.add(Image(it.id, it.albumId, it.title, it.url, it.thumbnailUrl))
                }
                list = snapList
            },
            { Log.d("dasal", "Error: Can't load images") }
        )
    )
}

我如何处理一个可组合的流动?

共有1个答案

毛弘博
2023-03-14

修好了。我在使用这个声明

var list = remember { mutableStateListOf<Image>() }

我把它改成了这个

val list = remember { mutableStateOf(listOf<Image>()) }

现在,我可以使用 list.value 属性来更新/读取当前值。

 类似资料:
  • 我对python还很陌生,我正在尝试创建21点。然而,当我试图打印出玩家的手牌时,我遇到了一些困难。 这是我的击球(抽牌)代码: 这是我打印卡片的代码: 我的代码所做的第一件事是为庄家和玩家抽两张牌,这运行得很好。然而,当玩家抽到一张牌后,它就会变得有点摇摆不定。输出如下所示: 当我抽到一张新牌时,这张牌不变,它保持我抽到的最后一张牌。然后,当我打印我的甲板,它打印我的旧甲板和我的新甲板。但是,分

  • 今天我在家里的电脑上安装了netbean,以便在家做一些工作。我安装了java 8 JDK(151),并安装了包含所有内容的netbean(没有进行自定义安装)。然后我把我的项目从github上撤下来。 我的安装文件夹是在E:\netbean我的项目文件夹是默认的c: 我加载了项目,打开XAMPP并运行它。太好了,很管用。 然后我对HTML进行了更改(修复了我犯的一个拼写错误)。再次运行。找不到零

  • 问题内容: 通过网络嵌套更新,打印“ abc已更新”,但实际值在Redis数据库中不更新。 注意:-上面的代码在localhost上有效,但更新未在heroku-redistogo上显示。 编辑:-我在本地主机上运行代码,redis连接到Redistogo。使用以下代码:- 设置快速会议:- 我还使用以下代码创建了另一个redisClient: 问题答案: 在Heroku上运行此代码时,您是否在控

  • 这是我的代码: 如果我先调用readAllData(),然后再调用readData(),我会得到一个RangeError:

  • 我对RxJava/RxAndroid还不熟悉,但我一直坚持使用我的用例。 我尝试迭代一个

  • 由于某些奇怪的原因,数据库没有得到更新,我可以得到正确的数据(我检查了它),但是当我单击submit时,数据库没有得到更新。你能帮我查一下有没有什么东西丢了吗?注意:“---”只是出于安全考虑! ?