在提供的示例代码中,LazyColumn每秒添加一个新项目,当一个新项目已经滚动出视图时,如果我继续向下滚动,它将继续触发反弹效果,新项目不会立即出现.

    @Composable
    fun Greeting(name: String, modifier: Modifier = Modifier) {
        val listState = rememberLazyListState()
        var list by remember { mutableStateOf(mutableStateListOf<String>("A","B","B","B","B","B","B","B","B","B","B","B","B","B"))}
        LaunchedEffect(Unit){
            withContext(Dispatchers.IO){
                var cnt=0
                while(true){
                    delay(1000)
                    list.add("${++cnt}")
                }
            }
        }
        LazyColumn(state = listState){
            itemsIndexed(list){i,v->
                key(i){
                    Text(v, fontSize = 30.sp)
                }
    
            }
        }
    }

这是当前的测试图. enter image description here

我希望在连续滚动手势的过程中无缝地滚动到新项目,而不必等待大约1秒才能看到新项目.有没有办法实现这种无缝滚动到新项目的效果?

推荐答案

您想要实现的是Paging个Like功能,但您是在经过一定延迟后才这样做的,这就是为什么列表不会显示新加载的项目.

Note:你可以想到的一件事是,如果使用listState.scrollToItem(list.lastIndex)添加了任何新元素,则将列表滚动到末尾,但当用户不想滚动时,这也不起作用.

So you have to load data prior to the user scrolls to the end and that's how when user reach the end then there will be more data to show which gives you the required seemless scrolling experience.

给定应用程序用户界面中的最后一个可见项目,即超过此最后一个项目的分页库应try 提前获取的项目数.该值应该比页面大小大几倍.

谷歌寻呼库的官方文档中提到了这一点,你可以通过:https://developer.android.com/topic/libraries/architecture/paging/data#define-paging-config查看

Paging preview

通过这种方法,您可以获得如预览中所示的预期行为,并且您还应该在列表的末尾显示一些在预览中实现的加载器,以处理数据加载需要更多时间和用户在加载下一个数据之前到达末尾等延迟.这样,用户也会有很好的体验.

Android相关问答推荐

使用不同的Google帐户登录

CameraX与jetpack组成屏幕逻辑

list 合并失败,AGP 8.3.0

约束布局:垂直链中的视图应将内容包裹到空间的1/3

为什么当我在装有Firebase的安卓系统中登录苹果时,收到的邮箱为空?

Android:微调:在代码中设置ArrayAdapter不希望调用On ItemSelected,仅当用户单击微调时调用

在Jetpack Compose中,如何判断屏幕是否已重新组合?

使用Android Jetpack Compose,为子Composable定义ViewModel是不是一种糟糕的做法?

为什么柱子的高度不都一样?

在Delphi中使用OpenCV for Android在使用JLIST时抛出错误

找不到com.android.tools.build:gradle:8.0

有没有什么方法可以让Beeware在安卓手机上显示图片?

SmsMessage如何在Kotlin库中工作?

看不到选项菜单栏

使用lazyColumn迁移paging3的旧代码

从我的 Android 应用程序发送到 Gin 时失败,但从 Postman 发送到 Gin 时成功

Jetpack Compose Canvas drawText colored颜色 混合?

如何像 XML 一样在 Compose Android Studio 中折叠/展开小部件代码区域/区域

如何将设备屏幕位置转换为发送事件位置?

使用 Jetpack Compose 的深层链接导航到可组合项