gpt4 book ai didi

android - 如何使用 Jetpack Compose AdapterList 保留滚动位置?

转载 作者:行者123 更新时间:2023-12-04 12:02:41 29 4
gpt4 key购买 nike

我有一个使用 Jetpack Compose 构建的具有列表详细信息流的应用程序。我想保留滚动位置从详细信息 View 返回到 ListView 时。

基于模型状态交换表面:

@Composable
private fun AppContent() {
val scrollerPosition = ScrollerPosition()
Crossfade(State.currentScreen) { screen ->
Surface(color = MaterialTheme.colors.background) {
when (screen) {
is Screen.List -> ListScreen(scrollerPosition)
is Screen.Details -> DetailsScreen(screen.transaction)
is Screen.New -> NewScreen()
}
}
}
}

ListScreen 曾经有一个 VerticalScroller,我给它一个 ScrollerPosition 以在屏幕更改后保留位置。但是,此解决方案不适用于 AdapterList。

以前是这样的:
@Composable
private fun TransactionsList(modifier: Modifier, scrollerPosition: ScrollerPosition) {
Box(modifier = modifier.fillMaxSize().wrapContentSize(Alignment.Center)) {
VerticalScroller(scrollerPosition = scrollerPosition) {
AdapterList(State.transactions, itemCallback = { transaction ->
TransactionListRow(transaction)
ListDivider()
})
}
}
}

如何使 AdapterList 保留滚动位置?
@Composable
private fun TransactionsList(modifier: Modifier, scrollerPosition: ScrollerPosition) {
Box(modifier = modifier.fillMaxSize().wrapContentSize(Alignment.Center)) {
AdapterList(State.transactions, itemCallback = { transaction ->
TransactionListRow(transaction)
ListDivider()
})
}
}

最佳答案

rememberScrollState() ?
我认为可以将其提取为一个值,或者可以使用 lerp() 函数,方法是将其设为自定义 Composable,而不是使用 Layout()为什么不使用惰性列呢?

关于android - 如何使用 Jetpack Compose AdapterList 保留滚动位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62314777/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com