@Override
  public void configurePinnedHeaders(PinnedHeaderListView listView) {
    int size = getPartitionCount();

    int topPosition = listView.getPositionAt(0);
    int partition = getPartitionForPosition(topPosition);

    if (partition >= 0) {
      for (int i = 0; i < size; i++) {
        if (isHeaderVisible(partition)) {
          listView.setHeaderInvisible(i, isPartitionEmpty(i));
        }
      }

      if (isHeaderVisible(partition)) {
        int headerHeight = listView.getPinnedHeaderHeight(partition);

        int visiblePosition = listView.getPositionAt(headerHeight);

        if (getPartitionForPosition(visiblePosition) == partition) {
          listView.setHeaderPinnedAtTop(partition, 0);
        } else {
          listView.setFadingHeader(partition, topPosition, true);
        }
      }
    }
  }