public void setLayoutHelpers(@Nullable List<LayoutHelper> helpers) {
        List<LayoutHelper> layoutHelpers = mHelperFinder.getLayoutHelpers();
        Iterator<LayoutHelper> it0 = layoutHelpers.iterator();
        while (it0.hasNext()) {
            LayoutHelper helper = it0.next();
            oldHelpersSet.put(System.identityHashCode(helper), helper);
        }

        // set ranges
        if (helpers != null) {
            int start = 0;
            Iterator<LayoutHelper> it1 = helpers.iterator();
            while (it1.hasNext()) {
                LayoutHelper helper = it1.next();
                if (helper instanceof FixAreaLayoutHelper) {
                    ((FixAreaLayoutHelper) helper).setAdjuster(mFixAreaAdjustor);
                }

                if (helper instanceof BaseLayoutHelper && mLayoutViewBindListener != null) {
                    ((BaseLayoutHelper) helper).setLayoutViewBindListener(mLayoutViewBindListener);
                }


                if (helper.getItemCount() > 0) {
                    helper.setRange(start, start + helper.getItemCount() - 1);
                } else {
                    helper.setRange(-1, -1);
                }

                start += helper.getItemCount();
            }
        }

        this.mHelperFinder.setLayouts(helpers);

        layoutHelpers = mHelperFinder.getLayoutHelpers();
        Iterator<LayoutHelper> iterator = layoutHelpers.iterator();
        while (iterator.hasNext()) {
            LayoutHelper layoutHelper = iterator.next();
            newHelpersSet.put(System.identityHashCode(layoutHelper), layoutHelper);
        }

        for (Iterator<Map.Entry<Integer, LayoutHelper>> it = oldHelpersSet.entrySet().iterator(); it.hasNext(); ) {
            Map.Entry<Integer, LayoutHelper> entry = it.next();
            Integer key = entry.getKey();
            if (newHelpersSet.containsKey(key)) {
                newHelpersSet.remove(key);
                it.remove();
            }
        }


        for (LayoutHelper helper : oldHelpersSet.values()) {
            helper.clear(this);
        }

        if (!oldHelpersSet.isEmpty() || !newHelpersSet.isEmpty()) {
            mSpaceMeasured = false;
        }

        oldHelpersSet.clear();
        newHelpersSet.clear();
        requestLayout();
    }
public void setLayoutHelpers ( @ Nullable List < LayoutHelper > helpers ) { List < LayoutHelper > layoutHelpers = mHelperFinder . getLayoutHelpers ( ) ; Iterator < LayoutHelper > it0 = layoutHelpers . iterator ( ) ; while ( it0 . hasNext ( ) ) { LayoutHelper helper = it0 . next ( ) ; oldHelpersSet . put ( System . identityHashCode ( helper ) , helper ) ; } if ( helpers != null ) { int start = 0 ; Iterator < LayoutHelper > it1 = helpers . iterator ( ) ; while ( it1 . hasNext ( ) ) { LayoutHelper helper = it1 . next ( ) ; if ( helper instanceof FixAreaLayoutHelper ) { ( ( FixAreaLayoutHelper ) helper ) . setAdjuster ( mFixAreaAdjustor ) ; } if ( helper instanceof BaseLayoutHelper && mLayoutViewBindListener != null ) { ( ( BaseLayoutHelper ) helper ) . setLayoutViewBindListener ( mLayoutViewBindListener ) ; } if ( helper . getItemCount ( ) > 0 ) { helper . setRange ( start , start + helper . getItemCount ( ) - 1 ) ; } else { helper . setRange ( - 1 , - 1 ) ; } start += helper . getItemCount ( ) ; } } this . mHelperFinder . setLayouts ( helpers ) ; layoutHelpers = mHelperFinder . getLayoutHelpers ( ) ; Iterator < LayoutHelper > iterator = layoutHelpers . iterator ( ) ; while ( iterator . hasNext ( ) ) { LayoutHelper layoutHelper = iterator . next ( ) ; newHelpersSet . put ( System . identityHashCode ( layoutHelper ) , layoutHelper ) ; } for ( Iterator < Map . Entry < Integer , LayoutHelper > > it = oldHelpersSet . entrySet ( ) . iterator ( ) ; it . hasNext ( ) ; ) { Map . Entry < Integer , LayoutHelper > entry = it . next ( ) ; Integer key = entry . getKey ( ) ; if ( newHelpersSet . containsKey ( key ) ) { newHelpersSet . remove ( key ) ; it . remove ( ) ; } } for ( LayoutHelper helper : oldHelpersSet . values ( ) ) { helper . clear ( this ) ; } if ( ! oldHelpersSet . isEmpty ( ) || ! newHelpersSet . isEmpty ( ) ) { mSpaceMeasured = false ; } oldHelpersSet . clear ( ) ; newHelpersSet . clear ( ) ; requestLayout ( ) ; }
Update layoutHelpers, data changes will cause layoutHelpers change

@param helpers group of layoutHelpers