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) } } } }