簡體   English   中英

RecyclerView中的notifyDataSetChanged時如何使指定的項目不更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM