我知道我能做到
- viewPager.setCurrentItem(position)
将我的视图寻呼机设置在所需的位置.我的问题是在实例化适配器之前我是否以及如何做到这一点.
意思是,如果我这样做
- pagerAdapter = new ViewPagerAdapter(arg1,arg2....);
- viewPager.setAdapter(pagerAdapter);
- viewPager.setCurrentItem(position);
第0项是第一次构建,之后也构建了所需位置的项目.这需要花费两倍的时间……在我的适配器中,每个项目都需要构建很多工作,所以最好避免在可能的情况下构建0位置项.也许通过在适配器的实例化中传递所需的位置作为参数……?
有办法吗?
解决方法
您可以通过调用onRestoreInstanceState来欺骗viewpager在设置适配器之前从给定位置开始,如下所示:
- int currentItem = 5;
- Parcel parcel = Parcel.obtain();
- writeParcelable(BaseSavedState.EMPTY_STATE,0);
- writeInt(currentItem);
- writeParcelable(null,0);
- setDataPosition(0);
- SavedState savedState = ViewPager.SavedState.CREATOR.createFromParcel(parcel);
- mPager.onRestoreInstanceState(savedState);
- mPager.setAdapter(mAdapter);