Android 如何在RecyclerView中notifyDataSetChanged时使指定项不更新
我在Android 如何在RecyclerView中notifyDataSetChanged时使指定项不更新,android,android-recyclerview,notifydatasetchanged,Android,Android Recyclerview,Notifydatasetchanged,我在RecyclerView中有一个项目,当我调用notifyDataSetChanged时,它不需要更新 但是我没有找到任何方法使指定的项避免更新。有可能这样做吗 我需要这样做,因为该项目是一个WebView,它加载了一个html页面,如果我调用notifydatasetchange,该项目将闪烁 我发布此问题的原因是在notifydatasetchange时避免了WebView的闪烁(请参阅)。在使用notifyItemRangeXXX方法失败后,我发布了这个问题 但是在检查您的答案和评论
RecyclerView
中有一个项目,当我调用notifyDataSetChanged
时,它不需要更新
但是我没有找到任何方法使指定的项避免更新。有可能这样做吗
我需要这样做,因为该项目是一个
WebView
,它加载了一个html页面,如果我调用notifydatasetchange
,该项目将闪烁
我发布此问题的原因是在notifydatasetchange
时避免了WebView
的闪烁(请参阅)。在使用notifyItemRangeXXX
方法失败后,我发布了这个问题
但是在检查您的答案和评论后,似乎无法避免在使用
notifyDataSetChanged
时进行更新,您应该以不同的方式思考哪些项目需要更新。要更新项目的UI,在数据更改后使用方法notifyDataSetChanged的目的是更新所有项目。如果你不想这种行为,就不要使用它
正确的方法是只更新已更改的数据。有一些方法可以帮助您仅使所需数据无效:
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);
}
}
for(int i=0;i
因此,我们需要遍历适配器中的所有元素,并仅为那些您不想排除的位置调用
notifyItemChanged()
如果您不想更新它,请不要更改数据源如果可行,您还可以使用notifyItemChanged(pos)
适用于除相关项目之外的其他项目。如果您使用的是RecyclerView.Adapter。您可能需要考虑NoTyItEfMechange(int位置)、NoTIFYITEMangeRechange(int Posits Stand,int ItMeCalt)方法