Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Kotlin - How to add OnPageChangeListener in ViewPager

I am new in kotlin, How can I add OnPageChangeListener in a ViewPager.

viewPager?.addOnPageChangeListener // Now how can I add listener to it.
like image 434
Rahul Avatar asked Aug 04 '17 18:08

Rahul


3 Answers

I found it is quite simple, but it took my time as I am new in kotlin. I hope it will save others time one day.

viewPager?.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {

            override fun onPageScrollStateChanged(state: Int) {
            }

            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {

            }
            override fun onPageSelected(position: Int) {

            }

        })

or we can implement ViewPager.OnPageChangeListener in our Activity or Fragment then just use viewPager?.addOnPageChangeListener(this) but make sure to implement overrided methods.

like image 156
Rahul Avatar answered Oct 21 '22 08:10

Rahul


For ViewPager2 you can do it using OnPageChangeCallBack,

viewPager2?.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
        override fun onPageSelected(position: Int) {
            super.onPageSelected(position)
        }

        override fun onPageScrollStateChanged(state: Int) {
            super.onPageScrollStateChanged(state)
        }

        override fun onPageScrolled(position: Int,
                                    positionOffset: Float,
                                    positionOffsetPixels: Int) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels)
        }
    })
like image 15
Vishist Varugeese Avatar answered Oct 21 '22 07:10

Vishist Varugeese


Since most of the times we need to override only one of three ViewPager.OnPageChangeListener's methods (usually onPageSelected), this might be useful to reduce the code:

viewPager?.addOnPageChangeListener(object : ViewPager.SimpleOnPageChangeListener() {

    //override only methods you need, not all of them

    override fun onPageSelected(position: Int) {

    }
})
like image 6
Vasily Kabunov Avatar answered Oct 21 '22 08:10

Vasily Kabunov