0

如何LazyColumn在 Jetpack Compose 中更新、删除或添加项目?
这很容易通过recyclerviewadapter.notifydatasetchangediffutils在recyclerview中实现

4

1 回答 1

0

只需在您传递给items函数的集合上执行此操作即可。就这么简单。如果您的课程是稳定的(只需使用data class),您就可以了,它会正常工作。欢迎来到 Compose 魔术。

如果您想要更新/删除/添加的最佳性能,然后在items函数中公开一个稳定的密钥,请参阅此处了解更多详细信息:https ://developer.android.com/jetpack/compose/lists#item-keys

例子:

@Composable
fun MessageList(messages: List<Message>) {
    LazyColumn {
        items(
            items = messages,
            key = { message ->
                // Return a stable + unique key for the item
                message.id
            }
        ) { message ->
            // Display entry here
            MessageRow(message)
        }
    }
}

在这里,如果您提供密钥 lambda,撰写将知道该条目是相同的条目 - 只是内容不同。如果您不提供此 lambda - 列表中的索引将用作键。因此,除了列表末尾之外的任何添加都会触发大量重组。所以它或多或少有点像 diff utils。您只需要提供这个,因为内容相等性由 compose 隐式处理 - 通过equals对象Message

因此,如果您想从列表中删除一条消息 - 将其删除并将新列表传递给MessageList. Compose 将为您处理剩下的事情

于 2021-09-28T14:45:44.333 回答