煩煩煩,最近過年到處是人請客下館子,整天迷迷糊糊的,老是忘東忘西,搞得幾個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();
}
總結
嗯⊙?⊙!,細心就好了。
暫時就這么多,可能不全面,以后遇到了別的突發情況再補充哈。
最后,今天是老媽生日,祝老媽生日快樂!