Buggy code:
public class BaseWrapperAdapter < VH extends ViewHolder > extends RecyclerView . Adapter < VH > { private static final String TAG = "ARVBaseWrapperAdapter" ; private static final boolean LOCAL_LOGD = false ; private RecyclerView . Adapter < VH > mWrappedAdapter ; private BaseWrapperAdapter . BridgeObserver mBridgeObserver ; public BaseWrapperAdapter ( RecyclerView . Adapter < VH > adapter ) { } private boolean isWrappedAdapterAlive ( ) { } public void release ( ) { } protected void onRelease ( ) { } public RecyclerView . Adapter < VH > getWrappedAdapter ( ) { } @ Override public void onAttachedToRecyclerView ( RecyclerView recyclerView ) { } @ Override public void onDetachedFromRecyclerView ( RecyclerView recyclerView ) { } @ Override public void onViewAttachedToWindow ( VH holder ) { } @ Override public void onViewDetachedFromWindow ( VH holder ) { } @ Override public void onViewRecycled ( VH holder ) { } @ Override public void setHasStableIds ( boolean hasStableIds ) { } @ Override public VH onCreateViewHolder ( ViewGroup parent , int viewType ) { } @ Override public void onBindViewHolder ( VH holder , int position ) { } @ Override public int getItemCount ( ) { } @ Override public long getItemId ( int position ) { } @ Override public int getItemViewType ( int position ) { } protected void onHandleWrappedAdapterChanged ( ) { } protected void onHandleWrappedAdapterItemRangeChanged ( int positionStart , int itemCount ) { } protected void onHandleWrappedAdapterItemRangeChanged ( int positionStart , int itemCount , Object payload ) { <START_BUG> BaseWrapperAdapter . notifyItemRangeChanged ( positionStart , itemCount ) ; <END_BUG> } protected void onHandleWrappedAdapterItemRangeInserted ( int positionStart , int itemCount ) { } protected void onHandleWrappedAdapterItemRangeRemoved ( int positionStart , int itemCount ) { } protected void onHandleWrappedAdapterRangeMoved ( int fromPosition , int toPosition , int itemCount ) { } final void onWrappedAdapterChanged ( ) { } final void onWrappedAdapterItemRangeChanged ( int positionStart , int itemCount ) { } final void onWrappedAdapterItemRangeChanged ( int positionStart , int itemCount , Object payload ) { } final void onWrappedAdapterItemRangeInserted ( int positionStart , int itemCount ) { } final void onWrappedAdapterItemRangeRemoved ( int positionStart , int itemCount ) { } final void onWrappedAdapterRangeMoved ( int fromPosition , int toPosition , int itemCount ) { } private static final class BridgeObserver < VH extends ViewHolder > extends RecyclerView . AdapterDataObserver { private WeakReference < BaseWrapperAdapter < VH > > mRefHolder ; public BridgeObserver ( BaseWrapperAdapter < VH > holder ) { } @ Override public void onChanged ( ) { } @ Override public void onItemRangeChanged ( int positionStart , int itemCount ) { } @ Override public void onItemRangeChanged ( int positionStart , int itemCount , Object payload ) { } @ Override public void onItemRangeInserted ( int positionStart , int itemCount ) { } @ Override public void onItemRangeRemoved ( int positionStart , int itemCount ) { } @ Override public void onItemRangeMoved ( int fromPosition , int toPosition , int itemCount ) { } } }

Fix:
BaseWrapperAdapter . notifyItemRangeChanged ( positionStart , itemCount , payload ) ;