package com.github.bigexcalibur.herovideo.ui.widget.banner; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.ImageView; import java.util.List; /** * Created by hcc on 16/8/7 21:18 * [email protected] * <p/> * Banner适配器 */ public class BannerAdapter extends PagerAdapter { private List<ImageView> mList; private int pos; private ViewPagerOnItemClickListener mViewPagerOnItemClickListener; void setmViewPagerOnItemClickListener(ViewPagerOnItemClickListener mViewPagerOnItemClickListener) { this.mViewPagerOnItemClickListener = mViewPagerOnItemClickListener; } BannerAdapter(List<ImageView> list) { this.mList = list; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { //对ViewPager页号求模取出View列表中要显示的项 position %= mList.size(); if (position < 0) { position = mList.size() + position; } ImageView v = mList.get(position); pos = position; v.setScaleType(ImageView.ScaleType.CENTER); //如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。 ViewParent vp = v.getParent(); if (vp != null) { ViewGroup parent = (ViewGroup) vp; parent.removeView(v); } v.setOnClickListener(v1 -> { if (mViewPagerOnItemClickListener != null) { mViewPagerOnItemClickListener.onItemClick(); } }); container.addView(v); return v; } @Override public void destroyItem(ViewGroup container, int position, Object object) { } interface ViewPagerOnItemClickListener { void onItemClick(); } }