ViewPager2 - 如何使用 registerOnPageChangeCallback 检查视图分页器项目位置

Mac*_*ver 5 android android-viewpager kotlin android-viewpager2

如何使用 ViewPager2 的registerOnPageChangeCallback功能来检查当前可见的 ViewPAger2 片段的位置?if我知道这将由/语句组成when,但不知道实现它的正确方法。

mViewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                if (mViewPager.currentPage) == 0 {
                // do something
                }
                else if (mViewPager.currentPage) == 1 {
                // do something
                }
                else {
                // do something
                }
                super.onPageSelected(position)
            }
        })
Run Code Online (Sandbox Code Playgroud)

svi*_*ata 15

使用 passposition来知道你在哪里:

 mViewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                if (position == 0) {
                // you are on the first page
                }
                else if (position == 1) {
                // you are on the second page
                }
                else if (position == 2){
                // you are on the third page
                }
                super.onPageSelected(position)
            }
        })
Run Code Online (Sandbox Code Playgroud)


nuh*_*oca 5

不要忘记取消注册您的回调,onDestroy以避免可能的内存泄漏。

override fun onDestroy() {
    super.onDestroy()
    mViewPager.unregisterOnPageChangeCallback(this)
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么?在`onDestroy`之后,持有 ViewPager2 的 Activity 无论如何都会被垃圾收集 --> ViewPager 也被垃圾收集 --> 回调也是如此 (3认同)