使用 Android jetpack compose 的 LazyColumn 横跨多个页面分页是一个常见的需求。以下是一些基本步骤来实现这个功能。
var currentPage = 0
val pageSize = 20
val lazyPagingItems = remember {
LazyPagingItems(pageSize = pageSize) { page ->
// TODO: 获取每个页面的数据
// 索引从 0 开始,因此需要将当前页面的索引加 1。
// 如果获取数据时出现问题,可以返回一个空列表或 null 值。
val currentPageItems = getData(page + 1) ?: emptyList()
currentPage = page // 更新当前页面的索引
currentPageItems // 返回当前页面的数据
}
}
LazyColumn {
itemsIndexed(lazyPagingItems) { index, item ->
// 显示每个页面的数据
// TODO: 添加您的内容组件
}
}
if (lazyPagingItems.isItemForLoading(currentPage + 1)) {
lazyPagingItems.loadNextPage()
}
val modifier = Modifier
.fillMaxWidth()
val scrollState = rememberLazyListState(
// 通过将当前页面的索引乘以页面大小,设置初始滚动位置。
// 如果您不希望页面滚动到顶部,可以使用一个不同的偏移量。
initialFirstVisibleItemIndex = currentPage * pageSize
)
LazyColumn(
modifier = modifier,
state = scrollState
) {
// 显示分页数据
}