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

解决Kotlin RecyclerView类型参数越界:需为ViewHolder子类型报错

报错原因

RecyclerView.Adapter的泛型参数有明确约束:传入的ViewHolder类型必须是RecyclerView.ViewHolder的子类。你的代码中StudentViewHolder错误继承了RecyclerView类,而非RecyclerView.ViewHolder,完全不符合泛型边界要求,因此触发编译报错。
另外代码中stdList使用了无泛型声明的原始类型ArrayList,属于不规范写法,虽然不会直接触发本次报错,但会带来类型安全隐患。

修复步骤
  • 修正StudentViewHolder的继承关系,将父类从RecyclerView改为RecyclerView.ViewHolder,构造参数保持传入itemView即可。
  • 补全stdList的泛型声明,明确其存储元素类型为StudentModel,消除原始类型风险。
修复后完整代码
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class StudentAdapter: RecyclerView.Adapter<StudentAdapter.StudentViewHolder>() {
    private var stdList: ArrayList<StudentModel> = ArrayList()

    fun addItems(items: ArrayList<StudentModel>){
        this.stdList = items
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StudentViewHolder {
        return StudentViewHolder(
            LayoutInflater.from(parent.context).inflate(R.layout.card_items_std, parent,false)
        )
    }

    override fun onBindViewHolder(holder: StudentViewHolder, position: Int) {
        val std = stdList[position]
        holder.bindView(std)
    }

    override fun getItemCount(): Int = stdList.size

    class StudentViewHolder(var view: View): RecyclerView.ViewHolder(view){
        private val id = view.findViewById<TextView>(R.id.tvId)
        private val name = view.findViewById<TextView>(R.id.tvName)
        private val email = view.findViewById<TextView>(R.id.tvEmail)
        private val btnDelete = view.findViewById<Button>(R.id.btnDelete)

        fun bindView(std: StudentModel){
            id.text = std.id.toString()
            name.text= std.name.toString()
            email.text = std.email.toString()
        }
    }
}

补充:如果需要数据更新后立刻刷新列表,可在addItems方法末尾添加notifyDataSetChanged()调用。

内容的提问来源于stack exchange,提问作者Bdbf Kazinga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:31:05