package com.beloo.widget.chipslayoutmanager.layouter.criteria; import com.beloo.widget.chipslayoutmanager.layouter.AbstractLayouter; import com.beloo.widget.chipslayoutmanager.layouter.ILayouter; import com.beloo.widget.chipslayoutmanager.layouter.ILayouterListener; import com.beloo.widget.chipslayoutmanager.layouter.Item; public class CriteriaPolitePositionReached extends FinishingCriteriaDecorator implements IFinishingCriteria, ILayouterListener { private boolean isPositionReached; private int reachedPosition; CriteriaPolitePositionReached(AbstractLayouter abstractLayouter, IFinishingCriteria finishingCriteria, int reachedPosition) { super(finishingCriteria); this.reachedPosition = reachedPosition; abstractLayouter.addLayouterListener(this); } @Override public boolean isFinishedLayouting(AbstractLayouter abstractLayouter) { boolean isFinishedFlow = super.isFinishedLayouting(abstractLayouter); return isFinishedFlow || isPositionReached; } @Override public void onLayoutRow(ILayouter layouter) { if (isPositionReached) return; if (layouter.getRowSize() == 0) return; for (Item item : layouter.getCurrentRowItems()) { if (item.getViewPosition() == reachedPosition) { isPositionReached = true; return; } } } }