@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));
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);
}
}