2 回答

TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊
如果我做對了,我adapter.notifyDataSetChanged()
就會更新你的列表。但是有更好的方法,DiffUtils
在recyclerView中使用。也就是說,比較新舊列表,僅更新更改的項目,而不更改整個數(shù)據(jù)集。
其他方法是,當(dāng) onItemClick 發(fā)生時,通過 .Activity/Or Fragment 獲取 viewHolder 引用recyclerView.findViewHolderForAdapterPosition(position)
。然后通過這個視圖改變視圖

TA貢獻(xiàn)1786條經(jīng)驗 獲得超13個贊
這里很多人都有很好的建議可以使用DiffUtils
。這是處理RecycleView
.
現(xiàn)在執(zhí)行此操作的最佳方法是使用ListAdapter
,這需要一個DiffUtil.ItemCallback
or AsyncDifferConfig
。ListAdapter 的一大優(yōu)點(diǎn)是所有不同的邏輯都是在后臺完成的,這反過來又優(yōu)化了您的 UI。您需要的一切就是覆蓋這個 funs:areItemsTheSame()
和areContentsTheSame()
,此外您還有getChangePayload()
- 有關(guān)更改項目的詳細(xì)信息。不要使用notifyDataSetChanged()
和其他范圍更新函數(shù),所有這些東西都是在幕后處理的。
您的案例可以通過不同的方法來處理。我更喜歡有一個中間狀態(tài),它會通知用戶發(fā)生了一些事情。因此,您可以在本地將該評論標(biāo)記為待投票,例如黃色箭頭,當(dāng)從后端獲得響應(yīng)時,您只需刷新即可,它將data-list
為ItemCallback
您執(zhí)行差異技巧。當(dāng)檢索響應(yīng)并應(yīng)用投票時,它可以標(biāo)記為綠色箭頭。這些只是關(guān)于正確流程的想法。
無論如何,您需要的就是使用 ,并且ListAdapter.sumbitList(newDataSet)
內(nèi)部將使用 ItemCallback 來比較新舊列表。differ
ListAdapter
添加回答
舉報