Jetpack Compose中如何将列表转为DropdownMenu的DropdownMenuItem列表
DropdownMenu本身并没有内置的items()扩展函数,你之前的写法不符合Jetpack Compose的API规范,所以IDE无法识别。以下是两种可行的实现方式:
方式一:直接遍历列表生成DropdownMenuItem
通过forEach循环遍历你的eventTypeList,为每个EventType对象创建对应的DropdownMenuItem:
DropdownMenu( expanded = expanded, onDismissRequest = { expanded = false } ) { plannerViewModel.eventTypeList.forEach { eventType -> DropdownMenuItem(onClick = { // 补充点击后的逻辑,比如选中当前EventType并关闭菜单 expanded = false }) { TypeOfEvent(eventType.color, eventType.name, openDialog) } } }
方式二:使用forEachIndexed处理索引
如果需要获取每个项的索引来做额外逻辑,可以用forEachIndexed遍历:
DropdownMenu( expanded = expanded, onDismissRequest = { expanded = false } ) { plannerViewModel.eventTypeList.forEachIndexed { index, eventType -> DropdownMenuItem(onClick = { // 可利用index实现如记录选中位置等逻辑 expanded = false }) { TypeOfEvent(eventType.color, eventType.name, openDialog) } } }
注意:DropdownMenu是一次性渲染所有子项的容器,不支持懒加载,直接遍历列表的方式是最贴合其API设计的实现方案。
内容的提问来源于stack exchange,提问作者Martim Gouveia
相关产品推荐
相关产品推荐

