RecyclerView item局部刷新優(yōu)化

從早期的listview到現(xiàn)在的recyclerview,不可避免的都是,遇到數(shù)據(jù)變化的時候,刷新界面,listview是最笨的,只能調(diào)用 notifydatasetchange來全局刷新,如果單個item變化,卻要我整個頁面刷新,太糟蹋性能了。
于是recyclerview橫空出世,推出了貼心的notidyItemchangenotifyitemrangeChange,瞬間讓我喜愛上了,從此對recyclerview愛不釋手。
不過,notidyItemchange還不是極限,比如我的單個item里面,有圖片(從網(wǎng)絡(luò)獲?。?,有toggleButton控件,當toggleButton狀態(tài)變化的時候,調(diào)用notidyItemchange,那圖片資源也會跟著刷新,有沒有辦法只刷新togglebutton控件呢?
答案就在這里:

RecyclerView.ViewHolder viewHolder = mRecyclerView.findViewHolderForAdapterPosition(i);
            if (viewHolder != null && viewHolder instanceof ItemHolder) {
                ItemHolder itemHolder = (ItemHolder) itemHolder 
                    itemHolder.mButton.togglestate();
                }
            }

我們根據(jù)item的位置,獲取到這個item對應(yīng)的viewholder,根據(jù)viewholder,只刷新我們對應(yīng)的控件,是不是很優(yōu)雅,極致的item刷新優(yōu)化。

該刷新方法在項目中親測,效率提升非常明顯,暫時沒發(fā)現(xiàn)有什么bug

有人可能會問,如果viewholder為空,該怎么辦?什么都不用辦,如果viewholder為空的話,說明該item不在屏幕顯示中,等滑動到顯示狀態(tài)的時候,recyclerview會自動調(diào)用onbindviewholder來刷新該item,你的item自然是最新的狀態(tài)了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容