RecyclerView: No adapter attached; skipping layout

开发中经常出现整个页面只需要一个RecyclerView做布局实现的情况,然后在启动APP的时候因为是异步获取数据的,在没有获取到数据时候就开始加载RcyclerView就会出现RecyclerView: No adapter attached; skipping layout致使APP无缘无故崩溃,甚至不会出现崩溃日志。

解决办法是:

在初始化布局的时候设置空的数据源,并设置RcyclerView的数据显示。在加载布局完成之后通过adapter.notifyDataSetChanged();进行刷新数据就可以避免出现RecyclerView: No adapter attached; skipping layout.

以下是部分代码:

public class TestFragment extends BaseFragmetn{
private List<Entity> data;

  @Override
    protected View initView() {
        return View.inflate(getActivity(), R.layout.fragement_counselor, null);
    }

    @Override
    protected void init() {
        // 在加载完布局之后创建空的数据源,设置进RecyclerView
        data = new ArrayList<>();
        // 设置RecyclerView的布局管理器
        rvCounselor.setLayoutManager(new GridLayoutManager(MyApp.getInstance(), 2));
        // 设置每个Item的间距
        rvCounselor.addItemDecoration(new SpaceItemDecoration(DensityUtils.dp2px(MainActivity.getInstance(), 15f)));
        // 设置Adapter
        adapter = new CounselorAdapter(MyApp.getInstance(), data);
        rvCounselor.setAdapter(adapter);
        // 设置监听
        adapter.setOnItemClick(new CounselorAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int pos) {
                int id = data.get(pos).getId();
                Intent intent = new Intent(MyApp.getInstance(), CounselorInfoActivity.class);
                intent.putExtra(Constant.INTENT_COUNSELOR_ID, id);
                startActivity(intent);
            }
        });
    }

 @Override
    public void setData2View(Counselor counselor) {
        // 异步加载完数据之后添加进数据源中然后通知Adapter刷新数据
        data.addAll(counselor.getData());
        adapter.notifyDataSetChanged();
    }

}

END

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,807评论 25 709
  • 使用异步获取数据时,必须先设置空数据adapter,获取数据后再更新adapter。
    阿里懒阅读 8,207评论 2 0
  • 简介: 提供一个让有限的窗口变成一个大数据集的灵活视图。 术语表: Adapter:RecyclerView的子类...
    酷泡泡阅读 10,615评论 0 16
  • 事实证明,我的腿疼只是疼,并不是长高。我的编制也是没有的,我的爱情也是已经消失了的。嗯,现在还剩自己一个人。
    清溪浅浅流阅读 1,157评论 0 0
  • 癌症,用艾灸可以扶正,增强免疫功能,取穴中脘、关元、膏肓、足三里。 中医管各种癌症叫癥瘕,癥瘕初是“气”产生的阶段...
    梁瑞189阅读 3,068评论 0 0