public void setHeader(@NonNull Group header) { if (header == null) throw new NullPointerException("Header can't be null. Please use removeHeader() instead!"); int previousHeaderItemCount = getHeaderItemCount(); this.header = header; notifyHeaderItemsChanged(previousHeaderItemCount); }
public void removeHeader() { int previousHeaderItemCount = getHeaderItemCount(); this.header = null; notifyHeaderItemsChanged(previousHeaderItemCount); }
private int getItemCountWithoutFooter() { return getBodyItemCount() + getHeaderItemCount(); }
private void hidePlaceholder() { if (!isPlaceholderVisible || placeholder == null) return; isPlaceholderVisible = false; notifyItemRangeRemoved(getHeaderItemCount(), placeholder.getItemCount()); }
private void showPlaceholder() { if (isPlaceholderVisible || placeholder == null) return; isPlaceholderVisible = true; notifyItemRangeInserted(getHeaderItemCount(), placeholder.getItemCount()); }
private void notifyHeaderItemsChanged(int previousHeaderItemCount) { int newHeaderItemCount = getHeaderItemCount(); if (previousHeaderItemCount > 0) { notifyItemRangeRemoved(0, previousHeaderItemCount); } if (newHeaderItemCount > 0) { notifyItemRangeInserted(0, newHeaderItemCount); } }
@Override public void addAll(int position, @NonNull Collection<? extends Group> groups) { if (groups.isEmpty()) { return; } super.addAll(position, groups); this.children.addAll(position, groups); final int notifyPosition = getHeaderItemCount() + getItemCount(children.subList(0, position)); notifyItemRangeInserted(notifyPosition, getItemCount(groups)); refreshEmptyState(); }
@Override public void add(int position, @NonNull Group group) { super.add(position, group); children.add(position, group); final int notifyPosition = getHeaderItemCount() + getItemCount(children.subList(0, position)); notifyItemRangeInserted(notifyPosition, group.getItemCount()); refreshEmptyState(); }
private void hideDecorations() { if (!isHeaderAndFooterVisible && !isPlaceholderVisible) return; int count = getHeaderItemCount() + getPlaceholderItemCount() + getFooterItemCount(); isHeaderAndFooterVisible = false; isPlaceholderVisible = false; notifyItemRangeRemoved(0, count); }
private void showHeadersAndFooters() { if (isHeaderAndFooterVisible) return; isHeaderAndFooterVisible = true; notifyItemRangeInserted(0, getHeaderItemCount()); notifyItemRangeInserted(getItemCountWithoutFooter(), getFooterItemCount()); }