package com.airbnb.epoxy; import java.util.List; /** * A small wrapper around {@link com.airbnb.epoxy.EpoxyController} that lets you set a list of * models directly. */ public class SimpleEpoxyController extends EpoxyController { private List<? extends EpoxyModel<?>> currentModels; private boolean insideSetModels; /** * Set the models to add to this controller. Clears any previous models and adds this new list * . */ public void setModels(List<? extends EpoxyModel<?>> models) { currentModels = models; insideSetModels = true; requestModelBuild(); insideSetModels = false; } @Override public final void requestModelBuild() { if (!insideSetModels) { throw new IllegalEpoxyUsage( "You cannot call `requestModelBuild` directly. Call `setModels` instead."); } super.requestModelBuild(); } @Override protected final void buildModels() { if (!isBuildingModels()) { throw new IllegalEpoxyUsage( "You cannot call `buildModels` directly. Call `setModels` instead."); } add(currentModels); } }