1.适配器代码
public class VPAdapter extends PagerAdapter { private List<ImageView> list; private Context context; private BannerClick bannerClick; public VPAdapter(List<ImageView> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { final int newposition = position % list.size(); ImageView iv = list.get(newposition); iv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { bannerClick.onBannerClickListener(newposition); } }); container.addView(iv); return iv; } @Override public void destroyItem(ViewGroup container, int position, Object object) { ImageView imageView = (ImageView) object; container.removeView(imageView); } public interface BannerClick{ void onBannerClickListener(int psn); } public void setOnBannerClickListener(BannerClick bannerClickListener){ bannerClick = bannerClickListener; } }主要代码在这里
@Override public int getCount() { return Integer.MAX_VALUE; }获取总数的时候返回最大
@Override public Object instantiateItem(ViewGroup container, int position) { final int newposition = position % list.size(); ImageView iv = list.get(newposition); iv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { bannerClick.onBannerClickListener(newposition); } }); container.addView(iv); return iv; }实例化item的时候用余数来计算
2.activity中
计时器计时轮播
private void autoMove(){ timer = new Timer(); timerTask = new TimerTask() { @Override public void run() { if (isSwitchBanner){ handlerPlus.sendEmptyMessage(0); } } }; timer.schedule(timerTask , 0 , 3000); }handler处理接收
private class HandlerPlus extends WeakHandler{ public HandlerPlus(Object object) { super(object); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); Fragment fragment = (Fragment) handlerPlus.getObject(); if (fragment != null){ switch (msg.what){ case 0: laundry_vp.setCurrentItem(laundry_vp.getCurrentItem() + 1); break; } } } }