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; } }