关于viewpager的滑动问题

今天碰到很诡异的问题,viewpager中放置至少三张图片的时候能够正常实现循环滑动,只放置一张或者两张的时候就不行。

后来发现问题症结:viewpager需要保证既可以向左滑动,又可以向右滑动,因此当前显示view的左侧和右侧都是存在的,只有超过这三个范围之外的才对其调用destory方法。

循环实现的代码如下:

package com.wot.cloudsensing.carrotfarm.adapter;

import java.util.ArrayList;

import com.wot.cloudsensing.carrotfarm.R;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;

public class ViewPagerAdapter extends PagerAdapter {
    private ArrayList<ImageView> imageviews;
    private int size = 0;

    public ViewPagerAdapter(ArrayList<ImageView> views) {
        this.imageviews = views;
        this.size = views.size();

    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == arg1;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        System.out.println("111  destroyItem position = "
                + (position % imageviews.size()));
        ((ViewPager) container).removeView(imageviews.get(position
                % imageviews.size()));
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        System.out.println("111  instantiateItem instantiateItem  position = "
                + (position % imageviews.size()));
        ((ViewPager) container).addView(
                imageviews.get(position % imageviews.size()), 0);
        return imageviews.get(position % imageviews.size());
    }

}
原文地址:https://www.cnblogs.com/bobodeboke/p/3305865.html