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

Kotlin:从RecyclerView Activity向Adapter传数组报错求助

解决RecyclerView Adapter传递数组的问题

嘿,刚接触Kotlin遇到这种问题很正常,我来帮你捋清楚~你遇到的红色错误提示“Too many arguments for public constructor...”,核心原因是你的SecondAdapter没有定义能接收数组的构造函数,当你在Activity里传content数组给它时,Adapter找不到对应的构造方法,所以报错了。

第一步:修改Adapter的构造函数

你需要给SecondAdapter添加一个接收数组的构造函数,把外部传入的数组直接作为Adapter的数据源。修改后的Adapter代码如下:

class SecondAdapter(private val lessons: Array<String>) : RecyclerView.Adapter<SecondCustomViewHolder>() {
    // 不需要再单独声明默认的lessons数组了,直接用构造函数传入的参数
    override fun getItemCount(): Int {
        return lessons.size
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SecondCustomViewHolder {
        val layoutInflater = LayoutInflater.from(parent.context)
        val cellForRow = layoutInflater.inflate(R.layout.lesson_row, parent, false)
        return SecondCustomViewHolder(cellForRow)
    }

    override fun onBindViewHolder(holder: SecondCustomViewHolder, position: Int) {
        // 这里可以补充代码,把数组里的内容绑定到ViewHolder的控件上
        // 比如你的item布局里有个TextView,id是tv_lesson_content,就可以这么写:
        // holder.viewTwo.findViewById<TextView>(R.id.tv_lesson_content).text = lessons[position]
    }
}

class SecondCustomViewHolder(var viewTwo: View) : RecyclerView.ViewHolder(viewTwo)

第二步:验证Activity里的传递代码

现在你的Adapter已经支持接收数组参数了,Activity里原来的传递代码:

recyclerView_main.adapter = SecondAdapter(content)

就可以正常运行,不会再报错啦!

额外小建议(针对Kotlin新手)

Kotlin里更推荐使用List<String>代替Array<String>,因为默认的List是不可变的,更安全且使用起来更灵活。如果要改成List的话:

  1. Activity里的content改成用listOf()创建:
var content: List<String> = if (navBarTitle == "Introduction") {
    listOf("Intro1", "Intro2")
} else {
    listOf("Lesson1-1", "Lesson 1-2")
}
  1. Adapter的构造函数改成接收List:
class SecondAdapter(private val lessons: List<String>) : RecyclerView.Adapter<SecondCustomViewHolder>() {
    // 其他代码不变,getItemCount还是return lessons.size
}

这样你的代码会更符合Kotlin的最佳实践哦~

内容的提问来源于stack exchange,提问作者Joe Shamuraq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:47:59