package com.airbnb.epoxy.sample.models;
import android.support.v7.widget.RecyclerView.RecycledViewPool;
import android.view.ViewGroup;
import com.airbnb.epoxy.EpoxyAttribute;
import com.airbnb.epoxy.EpoxyModel;
import com.airbnb.epoxy.EpoxyModelClass;
import com.airbnb.epoxy.EpoxyModelWithView;
import com.airbnb.epoxy.sample.views.Carousel;
import java.util.List;
@EpoxyModelClass
public abstract class CarouselModel extends EpoxyModelWithView<Carousel> {
@EpoxyAttribute List<? extends EpoxyModel<?>> models;
@EpoxyAttribute int numItemsExpectedOnDisplay;
@EpoxyAttribute(hash = false) RecycledViewPool recycledViewPool;
@Override
public void bind(Carousel carousel) {
// If there are multiple carousels showing the same item types, you can benefit by having a
// shared view pool between those carousels
// so new views aren't created for each new carousel.
if (recycledViewPool != null) {
carousel.setRecycledViewPool(recycledViewPool);
}
if (numItemsExpectedOnDisplay != 0) {
carousel.setInitialPrefetchItemCount(numItemsExpectedOnDisplay);
}
carousel.setModels(models);
}
@Override
public void unbind(Carousel carousel) {
carousel.clearModels();
}
@Override
protected Carousel buildView(ViewGroup parent) {
return new Carousel(parent.getContext(), null);
}
@Override
public boolean shouldSaveViewState() {
// Save the state of the scroll position
return true;
}
}