package cn.lightsky.infiniteindicator.recycle; import android.content.Context; import android.view.View; import android.view.ViewGroup; import java.util.ArrayList; import java.util.List; import cn.lightsky.infiniteindicator.ImageLoader; import cn.lightsky.infiniteindicator.OnPageClickListener; import cn.lightsky.infiniteindicator.Page; import static cn.lightsky.infiniteindicator.InfiniteIndicator.PAGE_COUNT_FACTOR; public class RecyleAdapter extends RecyclingPagerAdapter { private ViewBinder mViewBinder; private Context mContext; private ImageLoader mImageLoader; private OnPageClickListener mOnPageClickListener; private List<Page> mPageList = new ArrayList<>(); private boolean isLoop = true; public RecyleAdapter(Context context, ViewBinder viewBinder) { this(context, viewBinder,null); } public RecyleAdapter(Context context, ViewBinder viewBinder, OnPageClickListener onPageClickListener) { this.mContext = context; this.mOnPageClickListener = onPageClickListener; this.mViewBinder = viewBinder; } /** * get really position * * @param position * @return */ public int getRealPosition(int position) { return isLoop ? position % getRealCount() : position; } @Override public int getCount() { return isLoop ? getRealCount() * PAGE_COUNT_FACTOR : getRealCount(); } public int getRealCount() { return mPageList.size(); } @Override public View getView(final int position, View convertView, ViewGroup container) { final Page page = mPageList.get(getRealPosition(position)); convertView = mViewBinder.bindView( mContext, getRealPosition(position), page, mImageLoader, mOnPageClickListener, convertView, container); return convertView; } public void setImageLoader(ImageLoader imageLoader) { mImageLoader = imageLoader; } public void setPages(List<Page> pages) { this.mPageList = pages; notifyDataSetChanged(); } /** * @return the is Loop */ public boolean isLoop() { return isLoop; } /** * @param isLoop the is InfiniteLoop to set */ public void setIsLoop(boolean isLoop) { this.isLoop = isLoop; } }