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
相关产品推荐
相关产品推荐

