code: public int findFirstCompletelyVisibleItemPosition() {
          final View child = findOneVisibleChild(0, getChildCount(), true, false);
          return child == null ? NO_POSITION : getPosition(child);
      }
docs: Returns the adapter position of the first fully visible view. This position does not include
  adapter changes that were dispatched after the last layout pass.
  <p>
  Note that bounds check is only performed in the current orientation. That means, if
  LayoutManager is horizontal, it will only check the view's left and right edges.
  
  @return The adapter position of the first fully visible item or
  {@link RecyclerView#NO_POSITION} if there aren't any visible items.
  @see #findFirstVisibleItemPosition()
  @see #findLastCompletelyVisibleItemPosition()