如何替换Androidx RecyclerView为Support版本及解决IDE识别异常问题
这种情况我之前也碰到过,多半是缓存残留、配置没更新或者替换不彻底导致的,按下面的步骤一步步排查应该能解决:
确认Gradle依赖完全替换正确
确保你的Module级build.gradle里已经移除了所有AndroidX RecyclerView相关依赖,比如androidx.recyclerview:recyclerview:x.x.x,然后添加正确的Support库依赖:implementation 'com.android.support:recyclerview-v7:28.0.0'注意Support库的最高版本是28,所以你的
compileSdkVersion也要设置为28,否则会出现版本不兼容的问题。同时检查项目中有没有其他依赖偷偷引入AndroidX,比如一些第三方库,如果有的话,要么找该库的Support版本,要么考虑是否必须切换回Support(毕竟AndroidX是官方推荐的后续方案)。修改gradle.properties配置
如果之前项目启用了AndroidX,gradle.properties里可能有这两行配置,它们会自动将Support库转换为AndroidX,必须删掉或者设为false:android.useAndroidX=false android.enableJetifier=false(如果原本没有这两行,就不用添加,保持默认即可)
彻底清理项目缓存并重建
IDE的缓存经常会搞事情,按顺序执行以下操作:- 点击菜单栏的
Build > Clean Project - 然后点击
Build > Rebuild Project - 如果还是不行,点击
File > Invalidate Caches...,选择Invalidate and Restart,让IDE彻底清除缓存后重启。
- 点击菜单栏的
替换所有代码中的导入语句
手动搜索项目中所有import androidx.recyclerview.widget.RecyclerView;,替换为:import android.support.v7.widget.RecyclerView;别忘了关联的类,比如
LinearLayoutManager、GridLayoutManager这些也要同步替换成android.support.v7.widget下的对应类,还有Adapter和ViewHolder中的导入也检查一遍。检查XML布局文件中的标签
很多人会忽略布局文件里的RecyclerView标签,打开所有用到RecyclerView的布局文件,把标签从androidx.recyclerview.widget.RecyclerView改成android.support.v7.widget.RecyclerView,比如:<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/>
做完这些步骤后,再同步一次Gradle,应该就能正常识别Support版本的RecyclerView了。如果还是有问题,可以检查一下项目的build.gradle根文件,确认没有全局配置强制使用AndroidX的内容。
内容的提问来源于stack exchange,提问作者Bully Maguire

