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();
    }

總結

嗯⊙?⊙!,細心就好了。

暫時就這么多,可能不全面,以后遇到了別的突發情況再補充哈。

最后,今天是老媽生日,祝老媽生日快樂!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容