alibaba / UltraViewPager

UltraViewPager is an extension for ViewPager to provide multiple features in a single ViewPager.
MIT License
5k stars 678 forks source link

设置setInfiniteLoop(true)在调用notifyDataSetChanged()后,再调用setCurrentItem()无效问题 #143

Closed UserNameBoss closed 4 years ago

UserNameBoss commented 4 years ago

在Adapter调用了notifyDataSetChanged()后会回调finishUpdate()方法继而调用UltraViewPagerCenterListener.center()方法 @Override public void center() { setCurrentItem(0); } 因此造成在调用setCurrentItem()无效.

UserNameBoss commented 4 years ago

可以继承UltraViewPager方法后再setAdapter()方法中设置自己创建UltraViewPagerCenterListener的监听,以覆盖原有的监听。 ` @Override public void setAdapter(PagerAdapter adapter) { super.setAdapter(adapter); if(this.getViewPager().getAdapter()!=null&&this.getViewPager().getAdapter() instanceof UltraViewPagerAdapter) { ((UltraViewPagerAdapter)this.getViewPager().getAdapter()).setCenterListener(this); } }

@Override
public void center() {
    ......
}

@Override public void resetPosition() { this.getViewPager().setCurrentItem(this.getViewPager().getCurrentItem()); }`