Recycleview notifyDataSetChanged()方法調用出現IllegalStateException 問題的解決

關於Android Recycleview notifyDataSetChanged()方法調用出IllegalStateException 問題的解決。java

最近寫代碼使用到了recyclerview,其中界面有一個Checkbox的點擊,點擊以後是須要刷新界面的相關數據的邏輯的,可是在刷新的時候報了狀態異常,我的分析了一下緣由:提示說Cannot call this method while RecyclerView is computing a layout or scrolling android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.Java:1462),RecyclerViewAdapter顯然是用一個相似線程的東西寫的,咱們能夠在裏面看到不少父類線程的蹤跡,那麼能夠分析出出錯的緣由是由於RecyclerViewAdapter正在更新RecyclerView,也就是調用OnBindViewHolder的時候咱們又來調用Notifydatasetchanged方法,這個方法也是刷新界面,最終確定也是調用OnBindViewHolder,同時調用天然會拋出這個異常,固然,涉及到線程問題,那就確定涉及到同步跟異步的問題。 
解決方法,使用handler類排隊,等待recyclerview 更新結束以後再刷新。android

備註:因爲我並無分析RecyclerView 以及這個View的Adapter,因此我不保證個人分析必定是對的,若是有錯誤,但願你們在評論中指出來,一塊兒研究,但我經過這個分析畢竟解決了這個問題,無論緣由對與不對,能解決問題就行。異步

相關文章
相關標籤/搜索