/** * Register a callback to be invoked when an group item has been collapsed. * * @param listener The callback that will be invoked. */ public void setOnGroupCollapseListener(@Nullable OnGroupCollapseListener listener) { if (mWrapperAdapter != null) { mWrapperAdapter.setOnGroupCollapseListener(listener); } else { // pending mOnGroupCollapseListener = listener; } }
/** * Create wrapped adapter. * * @param adapter The target adapter. * @return Wrapped adapter which is associated to this {@link RecyclerViewExpandableItemManager} instance. */ @SuppressWarnings("unchecked") @NonNull public RecyclerView.Adapter createWrappedAdapter(@NonNull RecyclerView.Adapter adapter) { if (!adapter.hasStableIds()) { throw new IllegalArgumentException("The passed adapter does not support stable IDs"); } if (mWrapperAdapter != null) { throw new IllegalStateException("already have a wrapped adapter"); } long[] adapterSavedState = (mSavedState != null) ? mSavedState.adapterSavedState : null; mSavedState = null; mWrapperAdapter = new ExpandableRecyclerViewWrapperAdapter(this, adapter, adapterSavedState); // move listeners to wrapper adapter mWrapperAdapter.setOnGroupExpandListener(mOnGroupExpandListener); mOnGroupExpandListener = null; mWrapperAdapter.setOnGroupCollapseListener(mOnGroupCollapseListener); mOnGroupCollapseListener = null; return mWrapperAdapter; }