package com.airbnb.epoxy.sample.models; import android.support.annotation.DrawableRes; import android.view.View.OnClickListener; import android.widget.ImageView; import com.airbnb.epoxy.EpoxyAttribute; import com.airbnb.epoxy.EpoxyModelClass; import com.airbnb.epoxy.EpoxyModelWithHolder; import com.airbnb.epoxy.R; import com.airbnb.epoxy.sample.models.ImageButtonModel.ImageButtonHolder; import butterknife.BindView; import static com.airbnb.epoxy.EpoxyAttribute.Option.DoNotHash; @EpoxyModelClass(layout = R.layout.model_image_button) public abstract class ImageButtonModel extends EpoxyModelWithHolder<ImageButtonHolder> { @EpoxyAttribute @DrawableRes int imageRes; @EpoxyAttribute(DoNotHash) OnClickListener clickListener; @Override public void bind(ImageButtonHolder holder) { holder.button.setImageResource(imageRes); holder.button.setOnClickListener(clickListener); } @Override public void unbind(ImageButtonHolder holder) { // Release resources and don't leak listeners as this view goes back to the view pool holder.button.setOnClickListener(null); holder.button.setImageDrawable(null); } static class ImageButtonHolder extends BaseEpoxyHolder { @BindView(R.id.button) ImageView button; } }