You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
}

错误截图

ViewBinding无法识别GridView错误

解决步骤

  1. 修正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());
    
  2. 确认布局中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"
        ...其他布局属性 />
    
  3. 清理重建项目
    执行Build > Clean Project,再执行Build > Rebuild Project,让IDE重新生成正确的ViewBinding类,避免旧的缓存类导致问题。

  4. 验证ViewBinding配置
    确认Module级别的build.gradle中ViewBinding配置正确,并且已经同步项目:

    android {
        ...
        buildFeatures {
            viewBinding true
        }
    }
    

内容的提问来源于stack exchange,提问作者Pete Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:32:06