ViewPager2 PageChangeListener is not working like normal ViewPager.?
Asked
Active
Viewed 1.3k times
18
-
2ViewPager2 provides `OnPageChangeCallback`. – Vir Rajpurohit Jan 22 '20 at 06:34
-
Thats workingThanks – Unaisul Hadi Jan 22 '20 at 12:34
4 Answers
43
There is registerOnPageChangeCallback
method for that:
pager.registerOnPageChangeCallback(object: ViewPager2.OnPageChangeCallback() {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels)
}
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
}
override fun onPageScrollStateChanged(state: Int) {
super.onPageScrollStateChanged(state)
}
})

Pavlo Zoria
- 666
- 7
- 7
-
7just 5 cents from my side: don't forget to unregister the listener – Sergey Trukhachev Sep 20 '21 at 02:31
7
Below is the sample code for OnPageChangeListener in ViewPager2.
class ViewPager2PageChangeCallback(private val listener: (Int) -> Unit) : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
when (position) {
//YOUR CODE
}
}
}

Vir Rajpurohit
- 1,869
- 1
- 10
- 23
4
In Java one can code it like this:
mViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position,
float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
setProgress((position + positionOffset) / (mPageCount - 1));
}
});

sideshowbarker
- 81,827
- 26
- 193
- 197

Miguel Tomás
- 1,714
- 1
- 13
- 23
1
You can do like this.
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});

Nur Alam
- 192
- 2
- 8