private int recursiveCollapse(@IntRange(from = 0) int position) {
        T item = getItem(position);
        if (!isExpandable(item)) {
            return 0;
        }
        IExpandable expandable = (IExpandable) item;
        int subItemCount = 0;
        if (expandable.isExpanded()) {
            List<T> subItems = expandable.getSubItems();
            for (int i = subItems.size() - 1; i >= 0; i--) {
                T subItem = subItems.get(i);
                int pos = getItemPosition(subItem);
                if (pos < 0) {
                    continue;
                }
                if (subItem instanceof IExpandable) {
                    subItemCount += recursiveCollapse(pos);
                }
                mData.remove(pos);
                subItemCount++;
            }
        }
        return subItemCount;
    }
expand the item and all its subItems

@param position position of the item, which includes the header layout count.
@param init     whether you are initializing the recyclerView or not.
                if <strong>true</strong>, it won't notify recyclerView to redraw UI.
@return the number of items that have been added to the adapter.
common/src/main/java/com/sxjs/common/base/baseadapter/BaseQuickAdapter.java