private View getFirstViewUnobscuredByHeader(RecyclerView parent, View firstHeader) {
    boolean isReverseLayout = mOrientationProvider.isReverseLayout(parent);
    int step = isReverseLayout? -1 : 1;
    int from = isReverseLayout? parent.getChildCount()-1 : 0;
    for (int i = from; i >= 0 && i <= parent.getChildCount() - 1; i += step) {
      View child = parent.getChildAt(i);
      if (!itemIsObscuredByHeader(parent, child, firstHeader, mOrientationProvider.getOrientation(parent))) {
        return child;
      }
    }
    return null;
  }
Returns the first item currently in the RecyclerView that is not obscured by a header.

@param parent Recyclerview containing all the list items
@return first item that is fully beneath a header
library/src/main/java/com/timehop/stickyheadersrecyclerview/HeaderPositionCalculator.java