Android – ViewPager适配器,在实例化适配器之前设置主项

我知道我能做到
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);

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...