在实际应用中 总会用到轮播图的效果。当然 android的话很多情况下都是通过viewpager实现的。但是通过使用发现,它的轮播效果是这样的 从最后一个切回回第一个时是重新跳转到第一个来实现的。这样效果不是很理想。那么如何让他在最后一张时还是向右滑动切换回第一张呢。最常用的方法是最大值法。就是在适配器中将参数设置成最大值。让他一直找不到边界,自然就一直向右切换了。如下段代码
private class MyPagerAdapter extends PagerAdapter {
@Override
public void destroyItem(View container, int position, Object object) {
// TODO Auto-generated method stub
// position %= imageViewsList.size();
//((ViewPag.er)container).removeView((View)object);
// ((ViewPager)container).removeView(imageViewsList.get(position));这里最好不要用这个方法 会报异常
}
@Override
public Object instantiateItem(View container, int position) {
position %= imageViewsList.size();
if (position < 0){
position = imageViewsList.size() + position;
}
ImageView imageView = imageViewsList.get(position);
ViewParent vp = imageView.getParent();
if (vp != null){
ViewGroup parent = (ViewGroup)vp;
parent.removeView(imageView);
}
// ((ViewPager)container).removeView(imageViewsList.get(position));
imageLoader.displayImage(imageView.getTag() + "", imageView);
((ViewPager)container).addView(imageViewsList.get(position));
return imageViewsList.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
}