@CallSuper public void addAll(@NonNull Collection<? extends Group> groups) { for (Group group : groups) { group.registerGroupDataObserver(this); } }
@CallSuper public void addAll(int position, @NonNull Collection<? extends Group> groups) { for (Group group : groups) { group.registerGroupDataObserver(this); } }
@CallSuper public void add(int position, @NonNull Group group) { group.registerGroupDataObserver(this); }
@CallSuper public void add(@NonNull Group group) { group.registerGroupDataObserver(this); }
public void add(int index, @NonNull Group group) { if (group == null) throw new RuntimeException("Group cannot be null"); group.registerGroupDataObserver(this); groups.add(index, group); int itemCountBeforeGroup = getItemCountBeforeGroup(index); notifyItemRangeInserted(itemCountBeforeGroup, group.getItemCount()); }
public void add(@NonNull Group group) { if (group == null) throw new RuntimeException("Group cannot be null"); int itemCountBeforeGroup = getItemCount(); group.registerGroupDataObserver(this); groups.add(group); notifyItemRangeInserted(itemCountBeforeGroup, group.getItemCount()); }
/** * Adds the contents of the list of groups, in order, to the end of the adapter contents. * All groups in the list must be non-null. * * @param groups */ public void addAll(@NonNull Collection<? extends Group> groups) { if (groups.contains(null)) throw new RuntimeException("List of groups can't contain null!"); int itemCountBeforeGroup = getItemCount(); int additionalSize = 0; for (Group group : groups) { additionalSize += group.getItemCount(); group.registerGroupDataObserver(this); } this.groups.addAll(groups); notifyItemRangeInserted(itemCountBeforeGroup, additionalSize); }
/** * Updates the adapter with a new list that will be diffed on the <em>main</em> thread * and displayed once diff results are calculated. Not recommended for huge lists. * @param newGroups List of {@link Group} */ @SuppressWarnings("unused") public void update(@NonNull final Collection<? extends Group> newGroups) { final List<Group> oldGroups = new ArrayList<>(groups); final int oldBodyItemCount = getItemCount(oldGroups); final int newBodyItemCount = getItemCount(newGroups); final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff( new DiffCallback(oldBodyItemCount, newBodyItemCount, oldGroups, newGroups)); for (Group group : groups) { group.unregisterGroupDataObserver(this); } groups.clear(); groups.addAll(newGroups); for (Group group : newGroups) { group.registerGroupDataObserver(this); } diffResult.dispatchUpdatesTo(diffUtilCallbacks); }