Android之recyclerview报错-No adapter attached; skipping layout解决方法

烦烦烦,最近过年到处是人请客下馆子,整天迷迷糊糊的,老是忘东忘西,搞得几个recyclerview各种出现No adapter attached; skipping layout的问题,记录一下,免得又出错。

1、没有设置LayoutManager

//设置布局管理就ok了
layoutManager=new StaggeredGridLayoutManager( 2,StaggeredGridLayoutManager.VERTICAL );
rec_xkjd.setLayoutManager( layoutManager );
rec_xkjd.setAdapter( myXKJDadapter );

这个一定要设置,不然你的recyclerview是无论如何出不来的,为什么呢?

因为recyclerview很灵活,支持纵向的横向的列表,还支持网格式布局、瀑布流布局......等等众多样式。你如果不给她指定一个布局,就想让她显示,她会很为难的(⊙o⊙)~。就好比是叫人打球但不给球,叫人吃饭但不给碗。

2、没考虑Activity或Fragment的生命周期

有时会因为某些需求导致在onResume或onStart方法中重置了recyclerview,但其数据已经丢失或没有重新设置Adapter,就会报错No adapter attached; skipping layout

解决方法视具体情况而定,一般是把recyclerview这一整套代码写在onCreate里面就不用担心出问题。如果一定要在onStart里面写的话......额,还是不建议,毕竟每次onStart方法执行就重置一下recyclerview会极大降低用户友好度。

打个比方:我逛淘宝,往下翻了几十页后,点击一个item查看商品详情,结果返回时执行了onStart()方法让列表重置了,我又得翻好几十页才能接上上次看到的地方。Oh my god!!

3、写Adapter时忘了重写getItemCount()方法

害惨我了,找了各个地方代码都没发现问题,Log打印数据列表也没毛病,就是不显示,一直报错。最后才发现这个方法忘记改了。

getItemCount()方法创建时默认返回0(写完其他的就把这方法忘了,坑啊~),表示列表中item个数为0个,所以不显示。改成数据列表的大小就ok了。

@Override
    public int getItemCount() {
        //return 0;
        //改成下面就好了
        return myList.size();
    }

总结

嗯⊙∀⊙!,细心就好了。

暂时就这么多,可能不全面,以后遇到了别的突发情况再补充哈。

最后,今天是老妈生日,祝老妈生日快乐!

你可能感兴趣的:(Android之recyclerview报错-No adapter attached; skipping layout解决方法)