简体   繁体   中英

How to change page in ViewPager Android?

I am using View Pager in my App. I need to trigger page change every 1 min. I know that if user swipes, page change happens. But if we have to trigger it, is there any API for it.

How to change page in ViewPager Android?

Use ViewPager.setCurrentItem(int item) for changing ViewPager pages programmatically.

Where item is index of Page which want to set as current item in ViewPager.

private int mInterval = 5000; // 5 seconds by default, can be changed later
  private Handler mHandler;

  @Override
  protected void onCreate(Bundle bundle) {
    ...
    mHandler = new Handler();
    startRepeatingTask();
  }

  Runnable mStatusChecker = new Runnable() {
    @Override 
    public void run() {
      updatePage(); //this function can change value of mInterval.
      mHandler.postDelayed(mStatusChecker, mInterval);
    }
  };

  void startRepeatingTask() {
    mStatusChecker.run(); 
  }

  void stopRepeatingTask() {
    mHandler.removeCallbacks(mStatusChecker);
  }
private void updatePage(){
 viewPager.setCurrentItem(pageno)
}
Handler handler = new Handler();
handler.post(new Updater());

class Updater implements Runnable {
    public void run() {
        mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
        if (mViewPager.getAdapter().getCount() - 1 > mViewPager.getCurrentItem()){
            handler.postDelayed(new Updater, 60000);
        }
    }
}

You can use CountDownTimer do this easily.Change the page after every 60sec using below example

   class MyTimer extends CountDownTimer{

         public MyTimer(long millisInFuture, long countDownInterval) {
             super(millisInFuture, countDownInterval);
         }

         @Override
         public void onTick(long l) {

         }

         @Override
         public void onFinish() {
            viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
            myTimer.start();
         }

    MyTimer myTimer = new MyTimer(1000*60, 1000);
    myTimer.start();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM