@Override
  public int getItemViewType(int position) {
    if (isInChildView()) {
      if (position == 0) {
        return ItemType.itemTypeToViewType(ItemType.NAVIGATION_BACK);
      }
      return ItemType.itemTypeToViewType(ItemType.CHILD);
    } else {
      final int numClients = remoteClients.size();
      if (position < numClients) {
        if (!hiddenClients.isEmpty() && position == numClients - 1) {
          return ItemType.itemTypeToViewType(ItemType.HIDDEN_DEVICES);
        }
        return ItemType.itemTypeToViewType(ItemType.CLIENT);
      }

      final int sectionPosition =
          transformAdapterPositionForDataStructure(ItemType.SECTION_HEADER, position);
      if (sectionHeaders.get(sectionPosition) != null) {
        return ItemType.itemTypeToViewType(ItemType.SECTION_HEADER);
      }

      return ItemType.itemTypeToViewType(ItemType.HISTORY);
    }
  }