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

Android Studio报错:类型参数不在范围内 应为RecyclerView.ViewHolder子类型

报错原因

RecyclerView.Adapter对传入的泛型类型有强制约束:作为ViewHolder的类型必须是RecyclerView.ViewHolder的子类。
你代码里的DashboardViewHolder只是个普通的嵌套类,没有继承RecyclerView.ViewHolder,不满足泛型上界要求,编译器就会在你声明适配器泛型参数的位置抛出这个类型不匹配的错误。

修复方法

只需要修改DashboardViewHolder的类声明,让它继承RecyclerView.ViewHolder,并把构造接收的View对象传给父类构造方法即可,这是RecyclerView适配器的固定写法要求。
修复后的代码如下:

import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.surajpatil.navigationdrawer1.R

class DashboardRecyclerAdapter : RecyclerView.Adapter<DashboardRecyclerAdapter.DashboardViewHolder>(){

    // 仅修改此处类声明,增加ViewHolder继承关系
    class DashboardViewHolder(view:View) : RecyclerView.ViewHolder(view)
    {
        val textView: TextView = view.findViewById(R.id.txtRecyclerRowItem)
    }

    override fun onCreateViewHolder(parent: ViewGroup , viewType: Int): DashboardViewHolder {
        TODO("补全item布局加载、ViewHolder创建逻辑")
    }

    override fun onBindViewHolder(holder: DashboardViewHolder , position: Int) {
        TODO("补全数据和视图的绑定逻辑")
    }

    override fun getItemCount(): Int {
        TODO("补全返回列表总条数的逻辑")
    }
}

补充说明:三个重写方法里的TODO()是临时占位代码,运行到对应位置会抛异常,属于后续业务实现部分,和本次编译错误无关,补全逻辑后即可正常运行。

内容的提问来源于stack exchange,提问作者Suraj Patil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:06:27