Jetpack 为大数据编写 DropdownMenu

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

我在 DropdownMenu 上加载出价数据时遇到问题。 我的列表中有大约 500 个项目,然后我将其加载到下拉菜单中,这需要一些时间,而且很滞后。 如何在下拉菜单上进行异步显示? 显示一些数据计数,然后在后台加载附加数据或通过滚动加载?


val suggestions = viewModel.names.collectAsState().value
DropdownMenu(
                    modifier = Modifier
                        .fillMaxWidth()
                        .height(400.dp)
                        .background(MaterialTheme.colorScheme.background),
                    expanded = expanded,
                    onDismissRequest = { expanded = false },
                    properties = PopupProperties(focusable = false),
                ) {
                    suggestions.forEach { it ->
                        SuggestionWidget(
                            it!!.name
                        ) {

                        }
                    }
                }
asynchronous android-jetpack-compose dropdown
1个回答
0
投票

这是 Jetpack Compose 的 DropdownMenu 实现的问题,因为它在幕后使用 Column 而不是 LazyColumn:https://issuetracker.google.com/issues/242398344

您可以尝试将 LazyColumn 添加到 DropdownMenu,但这会导致另一个问题:https://issuetracker.google.com/issues/203328119

Google 开发者的回复:https://issuetracker.google.com/issues/203328119#comment3

如果你确实需要在 DropdownMenu 中使用 LazyColumn (因为你 比如说,菜单中有数百个项目),不幸的是,唯一的 选项是复制组件实现。这样你就会 能够用 LazyColumn 替换可滚动的 Column。

状态:无法修复(预期行为)


另请参阅类似的问题:DropDownMenu 帧丢失和 Jetpack Compose 中的滞后

© www.soinside.com 2019 - 2024. All rights reserved.