package com.yzy.supercleanmaster.widget.stickyheader;
import android.content.Context;
import android.support.annotation.DimenRes;
import android.support.annotation.IdRes;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.yzy.supercleanmaster.widget.stickyheader.animator.HeaderStikkyAnimator;
public abstract class StikkyHeaderBuilder {
protected final Context mContext;
protected View mHeader;
protected int mMinHeight;
protected HeaderAnimator mAnimator;
protected StikkyHeaderBuilder(final Context context) {
mContext = context;
mMinHeight = 0;
}
public static ListViewBuilder stickTo(final ListView listView) {
return new ListViewBuilder(listView);
}
public StikkyHeaderBuilder setHeader(@IdRes final int idHeader,
final ViewGroup view) {
mHeader = view.findViewById(idHeader);
return this;
}
public StikkyHeaderBuilder setHeader(final View header) {
mHeader = header;
return this;
}
public StikkyHeaderBuilder minHeightHeaderRes(
@DimenRes final int resDimension) {
mMinHeight = mContext.getResources()
.getDimensionPixelSize(resDimension);
return this;
}
public StikkyHeaderBuilder minHeightHeaderPixel(final int minHeight) {
mMinHeight = minHeight;
return this;
}
public StikkyHeaderBuilder animator(final HeaderAnimator animator) {
mAnimator = animator;
return this;
}
public abstract StikkyHeader build();
public static class ListViewBuilder extends StikkyHeaderBuilder {
private final ListView mListView;
protected ListViewBuilder(final ListView listView) {
super(listView.getContext());
mListView = listView;
}
@Override
public StikkyHeaderListView build() {
// if the animator has not been set, the default one is used
if (mAnimator == null) {
mAnimator = new HeaderStikkyAnimator();
}
return new StikkyHeaderListView(mContext, mListView, mHeader,
mMinHeight, mAnimator);
}
}
}