Android:PagerAdapter setPrimaryItem()不止一次被调用

时间:2014-02-04 05:29:05

标签: android android-viewpager

选择PagerAdapter.setPrimaryItem()的新网页后,为什么ViewPager.setCurrentItem(index)被多次调用(使用相同的值)?

2 个答案:

答案 0 :(得分:17)

是的,对我而言,它甚至一直无限呼唤。但是,如果您需要调用一次,这是一个简单的解决方案

public class MyPagerAdapter extends PagerAdapter {
    private int lastPosition = -1;

    @Override public void setPrimaryItem(ViewGroup container, int position, Object object) {
      super.setPrimaryItem(container, position, object);

      // Only refresh when primary changes
      if(lastPosition != position) {
        lastPosition = position;

        yourFunction();
      }
  }
}

答案 1 :(得分:0)

我认为PagerAdapter.setPrimaryItem()被叫多次是因为ViewPager.setOffscreenPageLimit(int) 有关更多信息,请参见官方文档: https://developer.android.com/reference/kotlin/androidx/viewpager/widget/ViewPager#setOffscreenPageLimit(kotlin.Int)