煩煩煩,最近過年到處是人請客下館子,整天迷迷糊糊的,老是忘東忘西,搞得幾個recyclerview各種出現(xiàn)No adapter attached; skipping layout的問題,記錄一下,免得又出錯。
1、沒有設(shè)置LayoutManager
//設(shè)置布局管理就ok了
layoutManager=new StaggeredGridLayoutManager( 2,StaggeredGridLayoutManager.VERTICAL );
rec_xkjd.setLayoutManager( layoutManager );
rec_xkjd.setAdapter( myXKJDadapter );
這個一定要設(shè)置,不然你的recyclerview是無論如何出不來的,為什么呢?
因為recyclerview很靈活,支持縱向的橫向的列表,還支持網(wǎng)格式布局、瀑布流布局......等等眾多樣式。你如果不給她指定一個布局,就想讓她顯示,她會很為難的(⊙o⊙)~。就好比是叫人打球但不給球,叫人吃飯但不給碗。
2、沒考慮Activity或Fragment的生命周期
有時會因為某些需求導(dǎo)致在onResume或onStart方法中重置了recyclerview,但其數(shù)據(jù)已經(jīng)丟失或沒有重新設(shè)置Adapter,就會報錯No adapter attached; skipping layout
解決方法視具體情況而定,一般是把recyclerview這一整套代碼寫在onCreate里面就不用擔(dān)心出問題。如果一定要在onStart里面寫的話......額,還是不建議,畢竟每次onStart方法執(zhí)行就重置一下recyclerview會極大降低用戶友好度。
打個比方:我逛淘寶,往下翻了幾十頁后,點擊一個item查看商品詳情,結(jié)果返回時執(zhí)行了onStart()方法讓列表重置了,我又得翻好幾十頁才能接上上次看到的地方。Oh my god??!
3、寫Adapter時忘了重寫getItemCount()方法
害慘我了,找了各個地方代碼都沒發(fā)現(xiàn)問題,Log打印數(shù)據(jù)列表也沒毛病,就是不顯示,一直報錯。最后才發(fā)現(xiàn)這個方法忘記改了。
getItemCount()方法創(chuàng)建時默認(rèn)返回0(寫完其他的就把這方法忘了,坑啊~),表示列表中item個數(shù)為0個,所以不顯示。改成數(shù)據(jù)列表的大小就ok了。
@Override
public int getItemCount() {
//return 0;
//改成下面就好了
return myList.size();
}
總結(jié)
嗯⊙?⊙!,細(xì)心就好了。
暫時就這么多,可能不全面,以后遇到了別的突發(fā)情況再補充哈。
最后,今天是老媽生日,祝老媽生日快樂!