@SuppressLint("NewApi") public void scrapActiveViews(){
  final View[] activeViews=mActiveViews;
  final boolean hasListener=mRecyclerListener != null;
  final boolean multipleScraps=mViewTypeCount > 1;
  ArrayList<View> scrapViews=mCurrentScrap;
  final int count=activeViews.length;
  for (int i=count - 1; i >= 0; i--) {
    final View victim=activeViews[i];
    if (victim != null) {
      final AbsHListView.LayoutParams lp=(AbsHListView.LayoutParams)victim.getLayoutParams();
      int whichScrap=lp.viewType;
      activeViews[i]=null;
      final boolean scrapHasTransientState=android.os.Build.VERSION.SDK_INT >= 16 ? victim.hasTransientState() : false;
      if (!shouldRecycleViewType(whichScrap) || scrapHasTransientState) {
        if (whichScrap != ITEM_VIEW_TYPE_HEADER_OR_FOOTER || scrapHasTransientState) {
          removeDetachedView(victim,false);
        }
        if (scrapHasTransientState) {
          if (mTransientStateViews == null) {
            mTransientStateViews=new SparseArrayCompat<View>();
          }
          mTransientStateViews.put(mFirstActivePosition + i,victim);
        }
        continue;
      }
      if (multipleScraps) {
        scrapViews=mScrapViews[whichScrap];
      }
      victim.onStartTemporaryDetach();
      lp.scrappedFromPosition=mFirstActivePosition + i;
      scrapViews.add(victim);
      if (android.os.Build.VERSION.SDK_INT >= 14) {
        victim.setAccessibilityDelegate(null);
      }
      if (hasListener) {
        mRecyclerListener.onMovedToScrapHeap(victim);
      }
    }
  }
  pruneScrapViews();
}

@ SuppressLint ( "NewApi" ) public void scrapActiveViews ( ) { final View [ ] activeViews = mActiveViews ; final boolean hasListener = mRecyclerListener != null ; final boolean multipleScraps = mViewTypeCount > 1 ; ArrayList < View > scrapViews = mCurrentScrap ; final int count = activeViews . length ; for ( int i = count - 1 ; i >= 0 ; i -- ) { final View victim = activeViews [ i ] ; if ( victim != null ) { final AbsHListView . LayoutParams lp = ( AbsHListView . LayoutParams ) victim . getLayoutParams ( ) ; int whichScrap = lp . viewType ; activeViews [ i ] = null ; final boolean scrapHasTransientState = android . os . Build . VERSION . SDK_INT >= 16 ? victim . hasTransientState ( ) : false ; if ( ! shouldRecycleViewType ( whichScrap ) || scrapHasTransientState ) { if ( whichScrap != ITEM_VIEW_TYPE_HEADER_OR_FOOTER || scrapHasTransientState ) { removeDetachedView ( victim , false ) ; } if ( scrapHasTransientState ) { if ( mTransientStateViews == null ) { mTransientStateViews = new SparseArrayCompat < View > ( ) ; } mTransientStateViews . put ( mFirstActivePosition + i , victim ) ; } continue ; } if ( multipleScraps ) { scrapViews = mScrapViews [ whichScrap ] ; } victim . onStartTemporaryDetach ( ) ; lp . scrappedFromPosition = mFirstActivePosition + i ; scrapViews . add ( victim ) ; if ( android . os . Build . VERSION . SDK_INT >= 14 ) { victim . setAccessibilityDelegate ( null ) ; } if ( hasListener ) { mRecyclerListener . onMovedToScrapHeap ( victim ) ; } } } pruneScrapViews ( ) ; }
move all views remaining in mactiveviews to mscrapviews .
