You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中如何将列表转为DropdownMenu的DropdownMenuItem列表

解决DropdownMenu中items()函数未识别的问题

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:48:16