package com.wasu.widgets.adapter; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import com.wasu.widgets.adbanner.ADLoopViewPager; import com.wasu.widgets.adbanner.ADViewHolderCreator; import com.wasu.widgets.adbanner.Holder; import java.util.List; import cn.com.wasu.main.R; /** * 广告轮播条适配器 * Created by Sai on 15/7/29. */ public class ADPageAdapter extends PagerAdapter { protected List mDatas; protected ADViewHolderCreator holderCreator; // private View.OnClickListener onItemClickListener; private boolean canLoop = true; private ADLoopViewPager viewPager; private final int MULTIPLE_COUNT = 300; public int toRealPosition(int position) { int realCount = getRealCount(); if (realCount == 0) return 0; int realPosition = position % realCount; return realPosition; } @Override public int getCount() { return canLoop ? getRealCount()*MULTIPLE_COUNT : getRealCount(); } public int getRealCount() { return mDatas == null ? 0 : mDatas.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { int realPosition = toRealPosition(position); View view = getView(realPosition, null, container); // if(onItemClickListener != null) view.setOnClickListener(onItemClickListener); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { View view = (View) object; container.removeView(view); } @Override public void finishUpdate(ViewGroup container) { int position = viewPager.getCurrentItem(); if (position == 0) { position = viewPager.getFristItem(); } else if (position == getCount() - 1) { position = viewPager.getLastItem(); } try { viewPager.setCurrentItem(position, false); }catch (IllegalStateException e){} } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } public void setCanLoop(boolean canLoop) { this.canLoop = canLoop; } public void setViewPager(ADLoopViewPager viewPager) { this.viewPager = viewPager; } public ADPageAdapter(ADViewHolderCreator holderCreator, List datas) { this.holderCreator = holderCreator; this.mDatas = datas; } public View getView(int position, View view, ViewGroup container) { Holder holder = null; if (view == null) { holder = (Holder) holderCreator.createHolder(); view = holder.createView(container.getContext()); view.setTag(R.id.cb_item_tag, holder); } else { holder = (Holder) view.getTag(R.id.cb_item_tag); } if (mDatas != null && !mDatas.isEmpty()) holder.UpdateUI(container.getContext(), position, mDatas.get(position)); return view; } // public void setOnItemClickListener(View.OnClickListener onItemClickListener) { // this.onItemClickListener = onItemClickListener; // } }