【发布时间】:2022-06-20 18:56:20
【问题描述】:
我有一个包含项目的惰性行。现在我想对在用户滚动惰性行时在视口中完全可见的项目进行 API 调用。
我已经尝试了以下代码:
listState = rememberLazyListState()
LaunchedEffect(listState){
snapshotFlow { listState.firstVisibleItemIndex }
.collectLatest{
Log.d("printed Item", listState.firstVisibleItemIndex.toString())
}}
这段代码的问题是:
- 即使第 2 项占据视口,也不会打印,除非第 1 项完全不可见。
- 对于平板电脑,由于它们的大屏幕尺寸,即使屏幕上有 2 个可见项目,也只会对第一个可见项目进行 API 调用。请参阅屏幕截图。
当第一个项目部分可见而第二个项目完全可见时 [1]:https://i.stack.imgur.com/l5QcB.jpg
当第二个图块完全可见而第一个图块完全不可见时 [2]:https://i.stack.imgur.com/6rmiQ.jpg
对于完全可见 2 个项目的平板电脑 [3]:https://i.stack.imgur.com/QYRTI.jpg
谁能告诉我如何解决我的问题?
【问题讨论】:
-
listState.layoutInfo.visibleItemsInfo? -
@PylypDukhov 你能用完整的代码回答吗,因为我不知道如何使用它来解决问题的逻辑,因为
listState.layoutInfo.visibleItemsInfo导致无限重组并且还返回部分可见的项目在屏幕上显示完全可见的项目。
标签: android android-layout android-jetpack-compose