code: 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;
      }
docs: 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