Android Studio中传递LazyColumn作用域内容至函数报错问题
问题分析与修复
你的代码报错是因为items()函数需要的是数据源集合(比如List<*>),但你传入的是LazyListScope.() -> Unit类型的作用域函数,类型不匹配导致“未解析引用”。
如果你想封装一个能复用LazyColumn内容的Composable,正确的写法应该是直接在函数内部调用传入的content作用域函数,而不是把它传给items():
@Composable fun ItemCreator(content: LazyListScope.() -> Unit) { LazyColumn { // 直接执行传入的LazyListScope作用域内容 content() } }
如果你的需求是基于数据源生成列表项,应该把数据源作为参数传入,再配合items():
@Composable fun <T> ItemCreator(itemsList: List<T>, itemContent: @Composable (T) -> Unit) { LazyColumn { items(itemsList) { item -> itemContent(item) } } }
调用示例:
// 调用第一种封装方式 ItemCreator { items(10) { index -> Text("第${index+1}项") } } // 调用第二种基于数据源的方式 val dataList = listOf("条目1", "条目2", "条目3") ItemCreator(itemsList = dataList) { item -> Text(item) }
内容的提问来源于stack exchange,提问作者vibe_tribe
相关产品推荐
相关产品推荐

