[英]How to make specified item not update when notifyDataSetChanged in RecyclerView
我在RecyclerView
有一個項目,當我調用notifyDataSetChanged
時不需要更新。
但是我沒有找到使指定項目避免更新的任何方法。 是否有可能做到這一點 ?
我需要執行此操作,因為該項目是WebView
,它已經加載了html頁面,如果我調用notifyDataSetChanged
,則該項目將閃爍。
我發布此問題的原因是,當notifyDataSetChanged
時避免了WebView
notifyDataSetChanged
(請參閱此問題 )。 使用notifyItemRangeXXX
方法失敗后,我將發布此問題。
但是在檢查了您的答案和評論之后,似乎無法避免在使用notifyDataSetChanged
時進行更新。
notifyDataSetChanged
IS的目的是更新所有項目。 如果您不想要這種行為,請不要使用它!
正確的方法是僅更新您更改的數據。 有一些方法可以幫助您僅使所需數據無效:
notifyItemChanged(int position)
notifyItemInserted(int position)
notifyItemMoved(int fromPosition, int toPosition)
notifyItemRangeChanged(int positionStart, int itemCount)
notifyItemRangeRemoved(int positionStart, int itemCount)
notifyItemRemoved(int position)
是的,這樣做實際上是可能的。 notifyDataSetChanged()
通知RecyclerView 數據集中的所有元素都已更改 。
由於您不希望發生這種情況,因此請排除特定的項目。
for(int i = 0; i< mAdapter.getItemCount(); i++){
if(i != itemPositionToExclude){
mAdapter.notifyItemChanged(i);
}
}
因此,我們需要遍歷適配器中的所有元素,並僅對which you do not want to exclude
位置調用notifyItemChanged()
。
您應該以不同的方式思考-哪些項目需要更新。 要更新項目的用戶界面,請在數據更改后使用方法notifyitemchanged
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.