Android Studio中RecyclerView.Adapter类型参数边界报错咨询
报错信息
编译阶段抛出如下错误:
Type parameter 'com.chad.library.adapter.base.viewholder.BaseViewHolder' is not within its bound; should extend 'androidx.recyclerview.widget.RecyclerView.ViewHolder'
核心引发原因
- 依赖适配不匹配:使用的BaseRecyclerViewAdapterHelper(即com.chad.library系列的BRVAH适配器库)版本和项目的AndroidX环境不匹配,2.x及更早版本的BRVAH是基于旧版Support库开发的,BaseViewHolder继承的是
android.support.v7.widget.RecyclerView.ViewHolder,不是AndroidX包下的对应类,自然不满足泛型边界约束。 - 依赖冲突:项目中存在多版本RecyclerView依赖混入,比如其他三方库传递引入了Support包下的RecyclerView,导致编译时类加载错乱,BaseViewHolder的父类被识别为非AndroidX版本。
- 导包错误:自定义Adapter代码中手动导入了Support包下的RecyclerView相关类,和当前依赖的BRVAH、AndroidX RecyclerView版本不匹配。
- AndroidX迁移不彻底:项目开启AndroidX后没有开启Jetifier自动转换,或者缓存未清理,旧的Support类引用残留。
可行解决方案
- 替换BRVAH为AndroidX适配版本
完全删除模块下build.gradle中旧版BRVAH的依赖(即com.github.CymChad:BaseRecyclerViewAdapterHelper开头的2.x版本依赖),替换为官方适配AndroidX的3.x及以上版本依赖,示例:implementation 'io.github.cymchad:BaseRecyclerViewAdapterHelper:3.0.14' - 统一RecyclerView依赖版本,解决冲突
在app模块的build.gradle中添加强制配置,锁定全项目使用的AndroidX RecyclerView版本,避免传递依赖引入旧版Support包类:
配置完成后依次点击Android Studio菜单栏configurations.all { resolutionStrategy { force 'androidx.recyclerview:recyclerview:1.3.2' } }File->Invalidate Caches...,勾选清除缓存选项后重启IDE,清空旧的编译缓存避免误判。 - 校验全局AndroidX配置
打开项目根目录下的gradle.properties文件,确认两个AndroidX相关开关为开启状态,保证Jetifier自动把三方库中的Support引用转换为AndroidX引用:android.useAndroidX=true android.enableJetifier=true - 排查代码导包
全局搜索项目中所有RecyclerView、ViewHolder相关的导包语句,删除所有android.support.v7.widget开头的旧包导入,替换为androidx.recyclerview.widget包下的对应类。
内容的提问来源于stack exchange,提问作者shanwu0623
相关产品推荐
相关产品推荐

