/** * Constructor * @param adapter The adapter which to be wrapped */ public SimpleWrapperAdapter(@NonNull RecyclerView.Adapter<VH> adapter) { mWrappedAdapter = adapter; mBridgeObserver = new BridgeAdapterDataObserver(this, mWrappedAdapter, null); mWrappedAdapter.registerAdapterDataObserver(mBridgeObserver); super.setHasStableIds(mWrappedAdapter.hasStableIds()); }
/** * * @param adapter Wrapped contents adapter. */ @SuppressWarnings("unchecked") @NonNull public AbstractHeaderFooterWrapperAdapter setAdapter(@NonNull RecyclerView.Adapter<? extends RecyclerView.ViewHolder> adapter) { if (mWrappedAdapter != null) { throw new IllegalStateException("setAdapter() can call only once"); } mWrappedAdapter = adapter; mHeaderAdapter = onCreateHeaderAdapter(); mFooterAdapter = onCreateFooterAdapter(); final boolean hasStableIds = adapter.hasStableIds(); mHeaderAdapter.setHasStableIds(hasStableIds); mFooterAdapter.setHasStableIds(hasStableIds); setHasStableIds(hasStableIds); mHeaderAdapterTag = addAdapter(mHeaderAdapter); mWrappedAdapterTag = addAdapter(mWrappedAdapter); mFooterAdapterTag = addAdapter(mFooterAdapter); return this; }
/** * {@inheritDoc} */ @Override public void setHasStableIds(boolean hasStableIds) { // checks all children adapters support stable IDs if (hasStableIds && !hasStableIds()) { final int numSegments = mAdaptersSet.getSegmentCount(); for (int i = 0; i < numSegments; i++) { RecyclerView.Adapter adapter = mAdaptersSet.getAdapter(i); if (!adapter.hasStableIds()) { throw new IllegalStateException("All child adapters must support stable IDs"); } } } super.setHasStableIds(hasStableIds); }
/** * @param adapter Adapter with which this data set differ is associated. * @param callback Callback that provides information about the items set in the adapter. */ public DataSetDiffer(RecyclerView.Adapter adapter, Callback callback) { if (!adapter.hasStableIds()) { adapter.setHasStableIds(true); } this.adapter = adapter; this.callback = callback; this.itemsObserver = new ItemsObserver(items, callback); this.adapterNotifyDiffHandler = new AdapterNotifyDiffHandler(adapter); startObservingItems(); }
/** * @param adapter Adapter with which this data set differ is associated. * @param callback Callback that provides information about the items set in the adapter. */ public AsyncDataSetDiffer(RecyclerView.Adapter adapter, DataSetDiffer.Callback callback) { if (!adapter.hasStableIds()) { adapter.setHasStableIds(true); } this.adapter = adapter; dataSetDiffer = new DataSetDiffer(adapter, callback); }
@Override public void setHasStableIds(boolean hasStableIds) { wrapped.setHasStableIds(hasStableIds); }
/** * the setHasStableIds is managed by the FastAdapter so forward this correctly * * @param hasStableIds */ @Override public void setHasStableIds(boolean hasStableIds) { mAdapter.setHasStableIds(hasStableIds); }
/** * {@inheritDoc} */ @Override public void setHasStableIds(boolean hasStableIds) { super.setHasStableIds(hasStableIds); if (isWrappedAdapterAlive()) mWrappedAdapter.setHasStableIds(hasStableIds); }