即使状态发生变化,我的可组合视图也不会自行重组

时间:2021-02-28 09:57:26

标签: android kotlin android-jetpack android-jetpack-compose

我正在尝试使用 jetpack compose 开发示例聊天应用程序,并在状态中苦苦挣扎。我有包含消息的 lazyColumn。我的问题是当用户单击按钮时,即使我的列表得到更新,我的“ChatList”功能也不会重新组合。它仅在“消息”状态更改时重新组合。因此,在我向文本字段键入内容后,我可以在列表中看到之前添加的消息。

这是我的组合和视图模型:

var services = Services(thumbnailService: ThumbnailService())
services = Services(thumbnailService: MockThumbnailService()) /// Cannot convert value of type 'MockThumbnailService' to expected argument type 'ThumbnailServiceProtocol'

1 个答案:

答案 0 :(得分:4)

我猜您的 messageList 属性正在获取相同内存地址的相同实例(这将无法 - 触发 - 通知新数据)。尝试将 addMessage 函数内的代码更改为:

fun addMessage(message: String) {
    messageList.add(ChatItem(message, true))
    // messages.value = messageList
    messages.value = messageList.toMutableList() // Copy it to a new memory address
}