Jetpack 编写无限滚动监听器

问题描述 投票:0回答:1

我想通过 Jetpack Compose 中的 LazyColumn 实现无限滚动,无需任何库。换句话说,当用户滚动到末尾时,我需要调用一个侦听器。

android kotlin android-jetpack-compose infinite-scroll lazycolumn
1个回答
1
投票

我使用了这个解决方案:

@Composable
inline fun LazyListState.scrollEndCallback(crossinline callback: () -> Unit) {
    LaunchedEffect(key1 = this) {
        snapshotFlow { layoutInfo }
            .filter { it.totalItemsCount > 0 }
            .map { it.totalItemsCount == (it.visibleItemsInfo.lastOrNull()?.index ?: -1).inc() }
            .distinctUntilChanged()
            .filter { it }
            .onEach { callback() }
            .collect()
    }
}

其用途:

@Composable
fun Example() {
    LazyColumn(
        state = rememberLazyListState().also {
            it.scrollEndCallback {
                // do sth
            }
        },
    ) {
        // items ....
    }
}

也可以与

LazyGridState

重复使用
© www.soinside.com 2019 - 2024. All rights reserved.