0

I have a viewpager showing the images, at the moment i have 3 images. It is going like 1->2->3 it stops on 3 but i want it to go to 1. Same as it should work from 1->3.

Here is my code:

public class ImageAdapter extends PagerAdapter {
    Context context;
    private int[] GalImages = new int[] {
        R.drawable.one,
        R.drawable.two,
        R.drawable.three
    };
    ImageAdapter(Context context){
        this.context=context;
    }
    @Override
    public int getCount() {
      return GalImages.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
      return view == ((ImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
      ImageView imageView = new ImageView(context);
      int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
      imageView.setPadding(padding, padding, padding, padding);
      imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
      imageView.setImageResource(GalImages[position]);
      ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      ((ViewPager) container).removeView((ImageView) object);
    }
  }

How can i set the loop for it. I hope i explained well. Thank-you.

1 Answers1

0

The best way to do this is to use Timer in combination with Runnable. Start by referencing your ViewPager:

imagePager = (ViewPager) view.findViewById (R.id.your_view_pager);

Then you need to set adapter to your imagePager like this (let's suppose you have already instantiated your ImageAdapter):

imagePager.setAdapter(imageAdapter);

Continue:

    private Timer swipeTimer = new Timer();
    private Handler handler = new Handler();

    imagePager.setCurrentItem(0); // this is the beginning

    final Runnable changeCurrentImage = new Runnable() {

        public void run() {
            currentImage++;

            if (currentImage >= imageAdapter.getCount()) {
                currentImage = 0; // go back to the first image
            }

            imagePager.setCurrentItem(currentPage, true);
        }
    };

    swipeTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            handler.post(changeCurrentImage);
        }
    }, 5000, 5000); // here you can set time interval
Jerry
  • 295
  • 3
  • 8