code: package io.virtualapp.abs.nestedadapter;
  
  import android.support.v7.widget.RecyclerView;
  import android.view.ViewGroup;
  
  public class RecyclerViewAdapterWrapper extends RecyclerView.Adapter {
  
      protected final RecyclerView.Adapter wrapped;
  
      public RecyclerViewAdapterWrapper(RecyclerView.Adapter wrapped) {
          super();
          this.wrapped = wrapped;
          this.wrapped.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
              public void onChanged() {
                  notifyDataSetChanged();
              }
  
              public void onItemRangeChanged(int positionStart, int itemCount) {
                  notifyItemRangeChanged(positionStart, itemCount);
              }
  
              public void onItemRangeInserted(int positionStart, int itemCount) {
                  notifyItemRangeInserted(positionStart, itemCount);
              }
  
              public void onItemRangeRemoved(int positionStart, int itemCount) {
                  notifyItemRangeRemoved(positionStart, itemCount);
              }
  
              public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
                  notifyItemMoved(fromPosition, toPosition);
              }
          });
      }
  
      @Override
      public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
          return wrapped.onCreateViewHolder(parent, viewType);
      }
  
  
      @Override
      public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
          wrapped.onBindViewHolder(holder, position);
      }
  
      @Override
      public int getItemCount() {
          return wrapped.getItemCount();
      }
  
      @Override
      public int getItemViewType(int position) {
          return wrapped.getItemViewType(position);
      }
  
      @Override
      public void setHasStableIds(boolean hasStableIds) {
          wrapped.setHasStableIds(hasStableIds);
      }
  
      @Override
      public long getItemId(int position) {
          return wrapped.getItemId(position);
      }
  
      @Override
      public void onViewRecycled(RecyclerView.ViewHolder holder) {
          wrapped.onViewRecycled(holder);
      }
  
      @Override
      public boolean onFailedToRecycleView(RecyclerView.ViewHolder holder) {
          return wrapped.onFailedToRecycleView(holder);
      }
  
      @Override
      public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
          wrapped.onViewAttachedToWindow(holder);
      }
  
      @Override
      public void onViewDetachedFromWindow(RecyclerView.ViewHolder holder) {
          wrapped.onViewDetachedFromWindow(holder);
      }
  
      @Override
      public void registerAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
          wrapped.registerAdapterDataObserver(observer);
      }
  
      @Override
      public void unregisterAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
          wrapped.unregisterAdapterDataObserver(observer);
      }
  
      @Override
      public void onAttachedToRecyclerView(RecyclerView recyclerView) {
          wrapped.onAttachedToRecyclerView(recyclerView);
      }
  
      @Override
      public void onDetachedFromRecyclerView(RecyclerView recyclerView) {
          wrapped.onDetachedFromRecyclerView(recyclerView);
      }
  
      public RecyclerView.Adapter getWrappedAdapter() {
          return wrapped;
      }
  }
  