code: private void recycleViewsFromStart(RecyclerView.Recycler recycler, int dt) {
          if (dt < 0) {
              if (DEBUG) {
                  Log.d(TAG, "Called recycle from start with a negative value. This might happen"
                          + " during layout changes but may be sign of a bug");
              }
              return;
          }
          final int limit = mOrientationHelper.getStartAfterPadding() + dt;
          final int childCount = getChildCount();
          if (mShouldReverseLayout) {
              for (int i = childCount - 1; i >= 0; i--) {
                  View child = getChildAt(i);
                  if (mOrientationHelper.getDecoratedEnd(child) > limit) {// stop here
                      recycleChildren(recycler, childCount - 1, i);
                      return;
                  }
              }
          } else {
              for (int i = 0; i < childCount; i++) {
                  View child = getChildAt(i);
                  if (mOrientationHelper.getDecoratedEnd(child) > limit) {// stop here
                      recycleChildren(recycler, 0, i);
                      return;
                  }
              }
          }
      }
docs: Recycles views that went out of bounds after scrolling towards the end of the layout.
  
  @param recycler Recycler instance of {@link com.twotoasters.android.support.v7.widget.RecyclerView}
  @param dt       This can be used to add additional padding to the visible area. This is used
  to
  detect children that will go out of bounds after scrolling, without actually
  moving them.