RecyclerView适配器中LayoutInflater无法解析item_recy布局求助
Cannot resolve symbol 'item_recy'的问题 遇到这种资源找不到的问题,大多是资源识别的缓存或者配置问题,我给你列几个最有效的排查步骤,按顺序试试:
先确认布局文件的基础信息
打开你的res/layout目录,确保item_recy.xml实实在在在这里,没有被误放到其他目录(比如layout-sw600dp这种限定符目录,或者其他模块的资源文件夹里)。另外要注意文件名的大小写和拼写,Android资源文件名是严格区分大小写的,别把item_recy写成Item_Recy或者itemRecy了。清理重建项目,刷新缓存
Android Studio的资源缓存经常会抽风,这是最常见的解决办法:- 点击顶部菜单栏的
Build→Clean Project,等清理完成后再点Build→Rebuild Project - 如果还不行,试试
File→Invalidate Caches...,勾选Invalidate and Restart,让Android Studio重启并清空缓存,这个操作能解决大部分缓存导致的资源识别问题
- 点击顶部菜单栏的
检查R文件的导入是否正确
虽然你说已经导入了项目的R文件,但还是要确认有没有不小心导入了android.R(系统自带的R文件,里面没有你的自定义布局)。可以先删掉当前的R导入语句,然后在R.layout.item_recy上按Alt+Enter(Windows/Linux)或者Option+Enter(Mac),让Android Studio自动导入正确的项目R文件。检查布局文件本身是否有效
打开item_recy.xml,切换到代码视图看看有没有红色报错。如果布局文件本身有语法错误(比如标签没闭合、属性名称写错、引用了不存在的资源),Android Studio就不会为它生成对应的资源ID,自然就找不到了。先把布局文件的错误修复好,再重新构建项目。多模块项目的额外检查
如果你的项目有多个模块,要确认item_recy.xml是在当前适配器所在模块的res/layout目录下,而不是其他模块。另外检查该模块的build.gradle文件,确保sourceSets里的资源目录配置正确,一般默认是这样的:sourceSets { main { res.srcDirs = ['src/main/res'] } }
最后提一句,你代码里的inflate方法参数是对的(传入了parent和false),这个能保证布局的LayoutParams正常生效,这点不用改~
内容的提问来源于stack exchange,提问作者atlicode

