/**
   * Get the data item associated with the specified position in the data set.
   *
   * <p>Since this wrapper inserts fake entries to fill out items grouped by header and also spaces
   * to insert headers into some positions will return null.
   *
   * @param position Position of the item whose data we want within the adapter's data set.
   * @return The data at the specified position.
   */
  @Override
  public Object getItem(int position) throws ArrayIndexOutOfBoundsException {
    Position adapterPosition = translatePosition(position);
    if (adapterPosition.mPosition == POSITION_FILLER
        || adapterPosition.mPosition == POSITION_HEADER) {
      // Fake entry in view.
      return null;
    }

    return mDelegate.getItem(adapterPosition.mPosition);
  }