Android view pager change pages automatically after a few seconds Android view pager change pages automatically after a few seconds android android

Android view pager change pages automatically after a few seconds


Use javautil timer and set one up and at the end of timer you can use

class UpdateTimeTask extends TimerTask {   public void run() {    //Code for the viewPager to change view  } } // Code to schedule the timer timer = new Timer(); timer.schedule(new UpdateTimeTask(), 100, 200);

Hope this helps, use the android docs for exact API calls

<ViewPager>.setCurrentitem(i++%<MaxViews>)


As far as UI update is concerned you can do it via handler, So call a handler inside timertask class, you can do something like this :

Timer timer=null;static int time_tomove = 0;class UpdateTimeTask extends TimerTask {       public void run() {        //Code for the viewPager to change view           System.out.println("The value of the time_tomove ");           time_tomove++;           Message msg = handler_timer.obtainMessage();            Bundle b = new Bundle();            b.putInt("time", time_tomove);            msg.setData(b);            handler_timer.sendMessage(msg);      }     }public static Handler handler_timer = new Handler(){    @Override    public void handleMessage(Message msg) {        super.handleMessage(msg);    magazineHolder.setCurrentItem(time_tomove);    }};

After doing this you can call the below two lines inside either your onresume or oncreate() method

timer = new Timer();         timer.schedule(new UpdateTimeTask(), 100, 2000);


Kotlin way

This is from a Fragment context, remove requireActivity() if you are in an Activity

private var timer: Timer? = nullprivate var page = 0private var maxPages = 4   // Use this method to setup your viewpager in your onCreate() or onActivityCreated() methods   fun setupViewPager(){    viewPager2.adapter = MyAdapter()    viewPager2.isUserInputEnabled = false    pageSwitcher(5)}fun pageSwitcher(seconds: Int) {    timer = Timer()    timer!!.scheduleAtFixedRate(RemindTask(), 0, seconds * 1000.toLong())}class RemindTask:TimerTask(){        override fun run() {            requireActivity().runOnUiThread {                if(page == maxPages){                    page = 0                }else{                    viewPager2.setCurrentItem(page++,true)                }            }        }    }