1

Я использую View Pager в своем приложении. Мне нужно запускать смену страницы каждые 1 мин. Я знаю, что если пользователь выполняет поиск, происходит смена страницы. Но если нам нужно вызвать его, есть ли для него API.Как изменить страницу в ViewPager Android?

ответ

1

Как изменить страницу в ViewPager Android?

Используйте программный код ViewPager.setCurrentItem(int item) для изменения страниц ViewPager.

Где item - это индекс страницы, который хотите установить как текущий элемент в ViewPager.

1
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) 
} 
0
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); 
     } 
    } 
} 
0

Вы можете использовать CountDownTimer сделать эту easily.Change страницу после каждого 60с, используя ниже примере

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();