【问题标题】:How can I remember the list position in a Compose LazyColumn using Paging 3 LazyPagingItems?如何使用 Paging 3 LazyPagingItems 记住 Compose LazyColumn 中的列表位置?
【发布时间】:2023-02-12 01:38:46
【问题描述】:

我有一个像这样的功能:

@Composable
fun LazyElementList(data: Flow<PagingData<Element>>) {
    val scrollState = rememberLazyListState()
    val elements = data.collectAsLazyPagingItems()

    LazyColumn(state = scrollState) {
        items(elements) {
            DisplayElement(it)
        }
    }
}

我想在导航到另一个屏幕并返回时保持在列表中的位置。

没想到,访问子屏幕时,维护了scrollState的值。如果不是,它应该被提升,可能进入 ViewModel。

【问题讨论】:

    标签: android-jetpack-compose android-paging android-paging-3


    【解决方案1】:

    在问题的代码中scrollState 将被重置为列表的开头,因为第一个组合的列表中没有项目。您需要等到元素加载完毕才能显示列表。

    @Composable
    fun LazyElementList(data: Flow<PagingData<Element>>) {
        val scrollState = rememberLazyListState()
        val elements = data.collectAsLazyPagingItems()
    
        if (elements.isLoading) {
            DisplayLoadingMessage()
        } else {
            LazyColumn(state = scrollState) {
                items(elements) {
                    DisplayElement(it)
                }
            }
        }
    }
    
    fun LazyPagingItems.isLoading(): Boolean
        get() = loadState.refresh is LoadState.Loading
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2022-01-20
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多