/*package*/ boolean isGroupExpanded(int groupPosition) { return mPositionTranslator.isGroupExpanded(groupPosition); }
public int getVisibleChildCount(int groupPosition) { if (isGroupExpanded(groupPosition)) { return getChildCount(groupPosition); } else { return 0; } }
if (!isGroupExpanded(groupPosition)) { return RecyclerView.NO_POSITION;
@SuppressWarnings("unchecked") boolean onTapItem(@NonNull RecyclerView.ViewHolder holder, int position, int x, int y) { if (mExpandableItemAdapter == null) { return false; } //noinspection UnnecessaryLocalVariable final int flatPosition = position; final long expandablePosition = mPositionTranslator.getExpandablePosition(flatPosition); final int groupPosition = ExpandableAdapterHelper.getPackedPositionGroup(expandablePosition); final int childPosition = ExpandableAdapterHelper.getPackedPositionChild(expandablePosition); if (childPosition != RecyclerView.NO_POSITION) { return false; } final boolean expand = !(mPositionTranslator.isGroupExpanded(groupPosition)); boolean result = mExpandableItemAdapter.onCheckCanExpandOrCollapseGroup(holder, groupPosition, x, y, expand); if (!result) { return false; } if (expand) { expandGroup(groupPosition, true, null); } else { collapseGroup(groupPosition, true, null); } return true; }
@SuppressWarnings("unchecked") @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull List<Object> payloads) { if (mExpandableItemAdapter == null) { return; } final long expandablePosition = mPositionTranslator.getExpandablePosition(position); final int groupPosition = ExpandableAdapterHelper.getPackedPositionGroup(expandablePosition); final int childPosition = ExpandableAdapterHelper.getPackedPositionChild(expandablePosition); final int viewType = (holder.getItemViewType() & (~VIEW_TYPE_FLAG_IS_GROUP)); // update flags int flags = 0; if (childPosition == RecyclerView.NO_POSITION) { flags |= Constants.STATE_FLAG_IS_GROUP; } else { flags |= Constants.STATE_FLAG_IS_CHILD; } if (mPositionTranslator.isGroupExpanded(groupPosition)) { flags |= Constants.STATE_FLAG_IS_EXPANDED; } safeUpdateExpandStateFlags(holder, flags); correctItemDragStateFlags(holder, groupPosition, childPosition); if (childPosition == RecyclerView.NO_POSITION) { mExpandableItemAdapter.onBindGroupViewHolder(holder, groupPosition, viewType, payloads); } else { mExpandableItemAdapter.onBindChildViewHolder(holder, groupPosition, childPosition, viewType, payloads); } }
canDrop = dropIsGroup; } else if (draggingFlatPosition < dropFlatPosition) { final boolean isDropGroupExpanded = mPositionTranslator.isGroupExpanded(dropGroupPosition); final int dropGroupVisibleChildren = mPositionTranslator.getVisibleChildCount(dropGroupPosition); if (dropIsGroup) { final boolean isDropGroupExpanded = mPositionTranslator.isGroupExpanded(dropGroupPosition); boolean canDrop; int modDropGroupPosition = dropGroupPosition;
/*package*/ boolean expandGroup(int groupPosition, boolean fromUser, Object payload) { if (mPositionTranslator.isGroupExpanded(groupPosition)) { return false; } // call hook method if (!mExpandableItemAdapter.onHookGroupExpand(groupPosition, fromUser, payload)) { return false; } if (mPositionTranslator.expandGroup(groupPosition)) { final long packedPosition = ExpandableAdapterHelper.getPackedPositionForGroup(groupPosition); final int flatPosition = mPositionTranslator.getFlatPosition(packedPosition); final int childCount = mPositionTranslator.getChildCount(groupPosition); notifyItemRangeInserted(flatPosition + 1, childCount); } { final long packedPosition = ExpandableAdapterHelper.getPackedPositionForGroup(groupPosition); final int flatPosition = mPositionTranslator.getFlatPosition(packedPosition); notifyItemChanged(flatPosition, payload); } // raise onGroupExpand() event if (mOnGroupExpandListener != null) { mOnGroupExpandListener.onGroupExpand(groupPosition, fromUser, payload); } return true; }
/*package*/ boolean collapseGroup(int groupPosition, boolean fromUser, Object payload) { if (!mPositionTranslator.isGroupExpanded(groupPosition)) { return false; } // call hook method if (!mExpandableItemAdapter.onHookGroupCollapse(groupPosition, fromUser, payload)) { return false; } if (mPositionTranslator.collapseGroup(groupPosition)) { final long packedPosition = ExpandableAdapterHelper.getPackedPositionForGroup(groupPosition); final int flatPosition = mPositionTranslator.getFlatPosition(packedPosition); final int childCount = mPositionTranslator.getChildCount(groupPosition); notifyItemRangeRemoved(flatPosition + 1, childCount); } { final long packedPosition = ExpandableAdapterHelper.getPackedPositionForGroup(groupPosition); final int flatPosition = mPositionTranslator.getFlatPosition(packedPosition); notifyItemChanged(flatPosition, payload); } // raise onGroupCollapse() event if (mOnGroupCollapseListener != null) { mOnGroupCollapseListener.onGroupCollapse(groupPosition, fromUser, payload); } return true; }
if (mPositionTranslator.isGroupExpanded(toGroupPosition)) { if (mPositionTranslator.isGroupExpanded(toGroupPosition)) { actualToFlatPosition = toPosition; } else {