【发布时间】:2021-09-16 13:31:13
【问题描述】:
我有一个 LazyRow。一切正常。我只希望每次在屏幕上绘制这个 LazyRow 时随机重新排列这些项目。这是我的代码:
LazyRow(
reverseLayout = true,
contentPadding = PaddingValues(top = twelveDp, end = eightDp)
) {
itemsIndexed(
items = featureUsersLazyPagingItems,
key = { _, featuredPerson ->
featuredPerson.uid
}
) { _, featuredUser ->
featuredUser?.let {
//Daw the age suggested People
DrawSuggestedPerson(featuredUser.toPersonUser(),) {
homeViewModel.deleteFeaturedUserFromLocalDb(featuredUser.uid)
}
}
}
featureUsersLazyPagingItems.apply {
when {
loadState.refresh is LoadState.Loading -> {
item {
ShowLazyColumnIsLoadingProgressBar()
}
}
loadState.append is LoadState.Loading -> {
item {
ShowLazyColumnIsLoadingProgressBar()
}
}
loadState.refresh is LoadState.Error -> {
val e = featureUsersLazyPagingItems.loadState.refresh as LoadState.Error
item {
LazyColumnErrorView(
message = e.error.localizedMessage!!,
onClickRetry = { retry() }
)
}
}
loadState.append is LoadState.Error -> {
val e = featureUsersLazyPagingItems.loadState.append as
LoadState.Error
item {
LazyColumnErrorView(
message = e.error.localizedMessage!!,
onClickRetry = { retry() }
)
}
}
}
}
所以 LazyRow 显示相同的一组 30 个左右的项目,但屏幕上只有 3-4 个项目可见,为了有点多样性,我希望重新排列这些项目,以便用户可以看到不同的项目屏幕上。有没有办法做到这一点?
【问题讨论】:
-
“每次用户导航到发出这个 LazyRow 的可组合” - 你能添加更多细节你的意思是什么?最初的动作是什么?
LazyRow视图出现/消失?你在说什么导航? -
我已经更新了问题,每次在屏幕上绘制 lAzyRow 时,我都希望重新排列它显示的项目列表
-
它可以在某些状态变量发生变化时重新绘制,如果你使用动画,这可能发生在每一帧上,所以我想这不是你想要的。从用户的角度来看应该发生什么?用户转到另一个屏幕然后回来?
-
如果在lazyRow 中设置后立即对数组列表进行洗牌怎么办?
-
@PhilipDukhov 这个 LazyRow 在我的 HomeActivity 上,所以每次用户打开应用程序时都会发生这种情况
标签: android-jetpack-compose android-jetpack-navigation