From the RecylerView.Adapter.notifyDataSetChanged() reference: [quote]RecyclerView will attempt to synthesize visible structural change events for adapters that report that they have stable IDs when this method is used. This can help for the purposes of animation and visual object persistence but individual item views will still need to be rebound and relaid out.
If you are writing an adapter it will always be more efficient to use the more specific change events if you can. Rely on notifyDataSetChanged() as a last resort.[/quote]
So notifyDataSetChanged() is more expensive computationally, but everything is redrawn at once so you never see the old state and it appears smoother.
Based on this, I’m going to use notifyDataSetChanged() by default and only switch to notifyItemChanged() when there is a noticeable lag. I’ll take visual consistency over imperceptible performance increase.