RecyclerView’s have a bad habit of “blinking” when they update. Basically, it happens when the view refreshes its images. They briefly disappear and reappear which looks like a “blink”. To prevent this, you set the setHasStableIds value to true on the RecyclerViewAdapter. Then you override the getItemId() method in the adapter and ensure that it always returns the same value for each ID. A simple way to accomplish this is to use the element’s hash code. Here is a blog post on which explains the problem and the fix.

Blinking RecyclerViews

Another quirk of RecyclerViewAdapters is that they sometimes crash when the user selects an item during a refresh. The reason is that the getAdapterPosition() method from the ViewHolder returns a value of -1 if the view is currently refreshing. If you are planning to use this value to reference an element in an array, it will throw an ArrayIndexOutOfBoundsException. The solution is to check the result of the getAdapterPosition() method against RecyclerView.NO_POSITION (which is -1) before using the value returned by getAdapterPosition().