我需要在我的LazyRow
中显示最喜欢的会话,这是LazyColumn
的项目,但如果最喜欢的会话列表cahnges,要更新LazyRow
中的内容,我需要向下滚动,而LazyRow
在顶部完全消失,然后返回到我的LazyRow
。
下面是我的代码:
@Composable
fun SessionsScreen(onSessionClick: (Session) -> Unit, viewModel: SessionsViewModel =
hiltViewModel()) {
val sessionsStateFlow by viewModel.sessionsStateFlow.collectAsState()
val favouriteStateFlow by viewModel.favouritesStateFlow.collectAsState()
LazyColumn(
modifier = Modifier
.padding(horizontal = 20.dp)
.fillMaxSize()
) {
favourite(favouriteStateFlow)
}
}
fun LazyListScope.favourite(favouritesState: List<Session>) {
item {
LazyRow {
if (favouritesState.isEmpty()) {
item { Text(text = stringResource(id = R.string.no_favourites)) }
}
items(favouritesState) {
Favourite(it)
}
}
}
}
字符串
1条答案
按热度按时间epggiuax1#
要在收藏夹会话列表发生变化时更新LazyRow中的内容,您应该使用items函数中的key参数。这可以确保Compose可以区分不同的项目并正确更新它们。
字符串