退出offScreenPageLimit后,系统调用什么来获取新视图或页面?
答案 0 :(得分:7)
source code for ViewPager
确实是找到答案的最佳位置。
简而言之,ViewPager
保留一个内部项目列表(表示“页面”)。此列表中的项目数基于mOffScreenPageLimit
值。默认情况下,它设置为1
,但您可以通过调用setOffscreenPageLimit(int limit)
来更改它。
在(包受保护的)方法populate()
中,ViewPager
填充了网页,以下代码段位于:
final int pageLimit = mOffscreenPageLimit;
final int startPos = Math.max(0, mCurItem - pageLimit);
final int N = mAdapter.getCount();
final int endPos = Math.min(N-1, mCurItem + pageLimit);
确定支持PagerAdapter
的数据集的边界,从而确定请求哪些位置页面。
使用(受保护的)addNewItem()
方法创建不存在的页面,该方法最终会在关联的instatiateItem()
上调用PagerAdapter
。这是您通常直接或通过其中一个具体子类实现的部分。
如果某些内容发生了变化,即更改了支持数据集,或者使用不同的值再次调用setOffscreenPageLimit()
时,可能会从内部列表中删除项目,并调用destroyItem()
通常在PagerAdapter
之后。
这会回答你的问题吗?如果没有,尝试比单线更具体 - 这应该有助于我们更好地帮助你。 :)