gpt4 book ai didi

android - 在jetpack compose LazyColumn中获取最后一个可见的项目索引

转载 作者:行者123 更新时间:2023-12-04 23:37:18 46 4
gpt4 key购买 nike

我想检查列表是否为 滚动到结尾的名单。 lazyListState不提供此属性
为什么我需要这个?我想为列表的“滚动到结尾”显示一个 FAB,如果最后一项已经可见,则隐藏它
(注意:有,但它是 internal

  /**
* Non-observable way of getting the last visible item index.
*/
internal var lastVisibleItemIndexNonObservable: DataIndex = DataIndex(0)
不知道为什么)
val state = rememberLazyListState()
LazyColumn(
state = state,
modifier = modifier.fillMaxSize()
) {
// if(state.lastVisibleItem == logs.length - 1) ...
items(logs) { log ->
if (log.level in viewModel.getShownLogs()) {
LogItemScreen(log = log)
}
}
}
那么,如何检查我的 LazyColumn滚动到数据集的末尾?

最佳答案

这是您实现它的一种方法:
检查是否滚动到末尾的扩展函数:

fun LazyListState.isScrolledToTheEnd() = layoutInfo.visibleItemsInfo.lastOrNull()?.index == layoutInfo.totalItemsCount - 1
用法示例:
val listState = rememberLazyListState()
val listItems = (0..25).map { "Item$it" }

LazyColumn(state = listState, modifier = Modifier.fillMaxSize()) {
items(listItems) { item ->
Text(text = item, modifier = Modifier.padding(16.dp))
}
}

Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.BottomEnd) {
if (!listState.isScrolledToTheEnd()) {
ExtendedFloatingActionButton(
modifier = Modifier.padding(16.dp),
text = { Text(text = "Go to Bottom") },
onClick = { /* Scroll to the end */}
)
}
}
结果:
https://im.ezgif.com/tmp/ezgif-1-b725f96cedd2.gif

关于android - 在jetpack compose LazyColumn中获取最后一个可见的项目索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66712286/

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