RecyclerView报No adapter attached错误且OnClickListener灰显如何解决
问题修复方案
你提供的Adapter代码本身没有逻辑错误,两个异常点可按以下方案分别处理:
1. 核心报错(No adapter attached; skipping layout、布局不展示)修复
这个错误和OnClickListener的提示完全无关,根本原因是你在Activity/Fragment中初始化RecyclerView的逻辑缺失,按以下步骤排查修改即可:
- 必须在主线程调用
recyclerView.setAdapter(adapter),不能等异步数据加载完成后才第一次绑定Adapter,哪怕初始没有数据也要提前绑定 - 必须给RecyclerView设置LayoutManager,缺失该配置也会触发相同报错
- 正确的初始化示例代码如下(写在对应Activity的
onCreate方法或者Fragment的onViewCreated方法中):
RecyclerView mealsRecView = findViewById(R.id.你的RecyclerView控件ID); // 第一步:设置LayoutManager,不可遗漏 mealsRecView.setLayoutManager(new LinearLayoutManager(this)); // 第二步:初始化Adapter MealsRecViewAdapter adapter = new MealsRecViewAdapter(this); // 第三步:提前绑定Adapter mealsRecView.setAdapter(adapter); // 后续加载到食物数据后再调用更新方法即可 ArrayList<Food> loadedMeals = 你获取到的食物数据集合; adapter.setMeals(loadedMeals);
2. OnClickListener显示灰色问题
这是Android Studio的语法优化提示,不属于错误,完全不影响程序运行,两种处理方式可选:
- 按照提示替换为lambda表达式,代码更简洁,修改后的点击逻辑如下:
holder.parent.setOnClickListener(v -> Toast.makeText(mContext, meals.get(position).getName() + "Selected", Toast.LENGTH_SHORT).show() );
- 不需要优化的话直接忽略该提示即可,原有代码可以正常运行。
内容的提问来源于stack exchange,提问作者Maxine
相关产品推荐
相关产品推荐

