/*package*/ void notifyChildItemRangeChanged(int groupPosition, int childPositionStart, int itemCount, Object payload) { final int visibleChildCount = mPositionTranslator.getVisibleChildCount(groupPosition); // notify if the group is expanded if ((visibleChildCount > 0) && (childPositionStart < visibleChildCount)) { final long packedPosition = ExpandableAdapterHelper.getPackedPositionForChild(groupPosition, 0); final int flatPosition = mPositionTranslator.getFlatPosition(packedPosition); if (flatPosition != RecyclerView.NO_POSITION) { final int startPosition = flatPosition + childPositionStart; final int count = Math.min(itemCount, (visibleChildCount - childPositionStart)); notifyItemRangeChanged(startPosition, count, payload); } } }
/*package*/ void notifyChildrenOfGroupItemChanged(int groupPosition, Object payload) { final int visibleChildCount = mPositionTranslator.getVisibleChildCount(groupPosition); // notify if the group is expanded if (visibleChildCount > 0) { final long packedPosition = ExpandableAdapterHelper.getPackedPositionForChild(groupPosition, 0); final int flatPosition = mPositionTranslator.getFlatPosition(packedPosition); if (flatPosition != RecyclerView.NO_POSITION) { notifyItemRangeChanged(flatPosition, visibleChildCount, payload); } } }
/*package*/ void notifyGroupAndChildrenItemsChanged(int groupPosition, Object payload) { final long packedPosition = ExpandableAdapterHelper.getPackedPositionForGroup(groupPosition); final int flatPosition = mPositionTranslator.getFlatPosition(packedPosition); final int visibleChildCount = mPositionTranslator.getVisibleChildCount(groupPosition); if (flatPosition != RecyclerView.NO_POSITION) { notifyItemRangeChanged(flatPosition, 1 + visibleChildCount, payload); } }
final int lastGroup = Math.max(0, mExpandableItemAdapter.getGroupCount() - 1); final int start = 0; final int end = Math.max(start, mPositionTranslator.getItemCount() - mPositionTranslator.getVisibleChildCount(lastGroup) - 1); end += mPositionTranslator.getVisibleChildCount(range.getEnd()); final long endPackedGroupPosition = ExpandableAdapterHelper.getPackedPositionForGroup(range.getEnd()); final int end = mPositionTranslator.getFlatPosition(endPackedGroupPosition) + mPositionTranslator.getVisibleChildCount(range.getEnd()); final int maxChildrenPos = Math.max(mPositionTranslator.getVisibleChildCount(groupPosition) - 1, 0); final int childStart = Math.min(range.getStart(), maxChildrenPos); final int childEnd = Math.min(range.getEnd(), maxChildrenPos);
} else if (draggingFlatPosition < dropFlatPosition) { final boolean isDropGroupExpanded = mPositionTranslator.isGroupExpanded(dropGroupPosition); final int dropGroupVisibleChildren = mPositionTranslator.getVisibleChildCount(dropGroupPosition); if (dropIsGroup) { canDrop = (!isDropGroupExpanded);