【发布时间】:2021-07-18 23:52:32
【问题描述】:
我在屏幕上有一个可组合的内容,其中显示了曲目项目(收藏夹)的列表:
var favourites: MutableList<Track> by mutableStateOf(mutableListOf())
@ExperimentalFoundationApi
@Composable
private fun ResultList(model: FreezerModel) {
with(model) {
if (favourites.isEmpty()) NoDataMessage("No favourites yet")
else {
LazyColumn(state = rememberLazyListState()) {
items(favourites) {
TrackCard(it, model)
}
}
}
}
}
在点击事件时,我正在更新我的收藏夹列表(添加/删除项目)。我怎样才能让我的可组合立即反映这些变化(比如重新绘制自己或类似的东西)?到目前为止,它只在我第一次切换到另一个屏幕时才有效。
感谢您的意见!
【问题讨论】:
-
它应该与
MutableStateList<T>一起使用。使用 varfavourites by mutableStateListOf<Track>() -
感谢您的意见!这也适用于 Set 吗?我找不到任何实现...
-
集合没有顺序,因此不实现
List<T>和Array<T>支持的Array<T>,因此不能直接用作items()的参数。在这种情况下,每次更新时调用集合上的toList()会起作用。
标签: android kotlin listview android-jetpack-compose