1. 程式人生 > >RecyclerView和StaggeredGridLayoutManager實現瀑布流向下滑動item跳動、留白的問題

RecyclerView和StaggeredGridLayoutManager實現瀑布流向下滑動item跳動、留白的問題

由於專案需要最近第一次採用RecyclerView和StaggeredGridLayoutManager實現了瀑布流,原本以為官方的東西不會有什麼問題,但是好事多磨,實現了以後上拉載入更多,都沒有問題,但是下拉回顯上面的item的時候出現跳動,回到最頂部的時候還會有留白。針對這個問題,網上搜索解決辦法都是諸如以下三步

第一步、設定如下

staggeredGridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);

第二步、新增滾動lisrener,設定如下:

staggeredGridLayoutManager
.invalidateSpanAssignments();
第三步、...

在這裡就不再多寫,因為我用了以後問題依然存在不知道有沒有設定以後解決了問題的,如果有解決了的,請留言,大家一起研究。

下面給出我的想法以及解決辦法:

經過長時間的嘗試和觀察,我發現在沒有載入更多的時候下滑是沒有出現跳動和留白的,所以我把問題集中在了載入更多呼叫的方法上,呼叫的關鍵方法只有一個,如下:

notifyDataSetChanged();

於是乎我發現RecyclerView還有其他的載入方法,而且不推薦使用上述方法載入更多,所以我把方法更改為:

notifyItemInserted(pos);

執行專案問題解決了。以上是我解決跳動和留白問題的過程,希望對遇到該問題的同學有所幫助。(這裡就不分析2個方法載入更多帶來的問題了,如果想深入瞭解的可以關注本人部落格,本人將在後面給出,謝謝)

備註一下,我用的SDK對應版本為25.3.1