Android ViewBinding无法识别GridView,无法调用setAdapter()求助
Android ViewBinding无法识别GridView问题解决
在Android开发中使用ViewBinding时,遇到binding对象无法识别GridView、无法调用setAdapter()方法设置自定义GridAdapter的问题,已在build.gradle中开启viewBinding配置,相关信息如下:
相关代码
Activity代码
public class GridMain extends AppCompatActivity { private ActivityMainBinding binding ; ..... binding = ActivityMainBinding.inflate(getLayoutInflater()) ; // 获取布局实例 setContentView(R.layout.activity_grid_main); setContentView(binding.getRoot()); // 设置ContentView为根布局 String[] item_names = { // 1到10项的名称 "Import/Export", "Inventory", "Query" , "Param", "Creation", "Setting", "Sync", "Modification", "Web", "Nothing"} ; int [] image_items = { // 1到10项的图片 R.drawable.image_1, R.drawable.image_2, R.drawable.image_3, R.drawable.image_4, R.drawable.image_5, R.drawable.image_6, R.drawable.image_7, R.drawable.image_8, R.drawable.image_9, R.drawable.image_10 } ; // 项目图片 GridAdapter gridAdapter = new GridAdapter(GridMain.this , item_names , image_items ); binding.gridView // 此处无法识别gridView,报错
build.gradle配置(Module级别)
buildFeatures { viewBinding true }
错误截图

解决步骤
修正Binding类匹配问题
你的Activity布局是activity_grid_main.xml,但代码中使用的是ActivityMainBinding——这是核心错误!ViewBinding会根据布局文件名生成对应的Binding类:activity_grid_main.xml对应的类是ActivityGridMainBinding,而非ActivityMainBinding。
修正代码:// 替换为正确的Binding类 private ActivityGridMainBinding binding; // 初始化时使用正确的Binding类 binding = ActivityGridMainBinding.inflate(getLayoutInflater()); // 移除重复的setContentView调用,只保留这一行 setContentView(binding.getRoot());确认布局中GridView的id
确保activity_grid_main.xml中的GridView控件id为gridView(ViewBinding会将布局中的id转为小驼峰命名,若布局中id是grid_view,则对应binding.gridView),示例布局代码:<GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" ...其他布局属性 />清理重建项目
执行Build > Clean Project,再执行Build > Rebuild Project,让IDE重新生成正确的ViewBinding类,避免旧的缓存类导致问题。验证ViewBinding配置
确认Module级别的build.gradle中ViewBinding配置正确,并且已经同步项目:android { ... buildFeatures { viewBinding true } }
内容的提问来源于stack exchange,提问作者Pete Chen
相关产品推荐
相关产品推荐

