/*viewpager页数 Integer.MAX_VALUE无限循环*/ @Override public int getCount() { return Integer.MAX_VALUE; } /*复用对象 true 复用view false 复用的是Object*/ @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /*初始化*/ @Override public Object instantiateItem(ViewGroup container, int position) { if (mViewItems.size() != 0 && mVpTotalNum != 0) { View view = mViewItems.get(position % mVpTotalNum); ViewGroup parent = (ViewGroup) view.getParent(); if (parent != null) { parent.removeView(view); } // LogUtils.e("instantiateItem",view+""); container.addView(view); return view; } return null; } /*销毁*/ @Override public void destroyItem(ViewGroup container, int position, Object object) { // LogUtils.e("destroyItem",object+""); // container.removeView( mViewItems.get(position % mVpTotalNum)); } }
/** * 无限轮播的adapter 解决低于三个轮播图崩溃问题 * Created by Administrator on 2016/4/12. */ public class AcActivityAdapter extends PagerAdapter { private Context mContext = MyApplication.getInstance().getApplicationContext(); private Resources mResources = mContext.getResources(); private List<View> mViewItems = new ArrayList<>(); private List<View> mDotsIvs = new ArrayList<>(); private int mVpTotalNum; private int mVpNum; //TODO 修改传入的值 public AcActivityAdapter(HomeBean.Ads data, ViewPager viewPager, LinearLayout llDots,final ActivityRvAdapter.OnClickListener onClickListener) { super(); final List<HomeBean.Ads.Img> imgList = data.getImgList(); mVpTotalNum = imgList.size(); int dotsPx = GlobalUtils.dip2pix(mContext, 7f); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(dotsPx, dotsPx); layoutParams.setMargins(dotsPx / 2, dotsPx, dotsPx, dotsPx); if (mVpTotalNum != 0) { /*viewPager的滚动监听 改变指示圆点状态*/ viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mVpNum = (position % mVpTotalNum); for (View view : mDotsIvs) { if (mVpNum == (int) view.getTag()) { view.setSelected(true); } else { view.setSelected(false); } } } @Override public void onPageScrollStateChanged(int state) { } }); for (int i = 0; i < mVpTotalNum; i++) { //TODO 修改返回Bean 修改url地址 String url = imgList.get(i).getImgDetail().getImgAdd(); Uri uri = Uri.parse(url); //新建圆点 View dotsView = new View(mContext); dotsView.setLayoutParams(layoutParams); dotsView.setTag(i); dotsView.setBackgroundResource(R.drawable.banner_dots_selector); //默认第一个着色 if (i == 0) { dotsView.setSelected(true); } mDotsIvs.add(dotsView); //在linearLayout上添加圆点 防止每次回收时重新刷新导致添加过多的圆点 if (llDots.getChildCount() < mVpTotalNum) { llDots.addView(dotsView, i); } //viewPager的itemView SimpleDraweeView simpleDraweeView = new SimpleDraweeView(mContext); GenericDraweeHierarchy vpGdh = new GenericDraweeHierarchyBuilder(mResources) .setActualImageScaleType(ScalingUtils.ScaleType.FIT_XY) .build(); simpleDraweeView.setHierarchy(vpGdh); simpleDraweeView.setImageURI(uri); simpleDraweeView.setClickable(true); simpleDraweeView.setFocusable(true); mViewItems.add(simpleDraweeView); simpleDraweeView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //TODO 修改点击事件 TODO 返回值 if (onClickListener != null) { onClickListener.onClick(v, imgList.get(mVpNum).getTargetName()); } } }); } } } /*viewpager页数 Integer.MAX_VALUE无限循环*/ @Override public int getCount() { return Integer.MAX_VALUE; } /*复用对象 true 复用view false 复用的是Object*/ @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /*初始化*/ @Override public Object instantiateItem(ViewGroup container, int position) { if (mViewItems.size() != 0 && mVpTotalNum != 0) { View view = mViewItems.get(position % mVpTotalNum); ViewGroup parent = (ViewGroup) view.getParent(); if (parent != null) { parent.removeView(view); } container.addView(view); return view; } return null; } /*销毁*/ @Override public void destroyItem(ViewGroup container, int position, Object object) { // container.removeView(mViewItems.get(position % mVpTotalNum)); } }