@Override
public Object instantiateItem(ViewGroup container, int position) {
Log.e("信息", "PagerAdapter--instantiateItem"+position);
container.addView(viewPagerViewList.get(position));
return viewPagerViewList.get(position);
}
ViewPager的setOffscreenPageLimit(int)方法是预加载当前页左右两边的页数。
下图是设置为1的时候:
从上图可以看出,初始进入第0页,只有instantiateItem0和instantiateItem1,当滑动后到达第一页,此时会加载第2页。当继续右滑,当前页是第2页,会加载当前页的下一页,即第3页,同时会销毁掉第0页,这样始终会保持当前页左右两边只各加载了一页。limit设置为1,则始终只有3页内容被加载,不在范围的之前加载的会被销毁掉。
private static final int DEFAULT_OFFSCREEN_PAGES = 1;
public void setOffscreenPageLimit(int limit) {
if (limit < DEFAULT_OFFSCREEN_PAGES) {
Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +
DEFAULT_OFFSCREEN_PAGES);
limit = DEFAULT_OFFSCREEN_PAGES;
}
从setOffscreenPageLimit源码可以看出,当setOffscreenPageLimit(0),并不会取消预加载。同时如果不设置的话,同样默认为setOffscreenPageLimit(1);