离开 offScreenPageLimit 后,系统调用什么来获取新的视图或页面?
问问题
4014 次
1 回答
7
的源代码ViewPager
确实是找到答案的最佳场所。
简而言之,aViewPager
保留了一个内部项目列表(表示“页面”)。此列表中的项目数基于该mOffScreenPageLimit
值。默认情况下它设置为1
,但您可以通过调用来更改它setOffscreenPageLimit(int limit)
。
在 (package protected) 方法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
因此确定了哪些位置页面将被请求。
不存在的页面是使用 (package protected)addNewItem()
方法创建的,该方法基本上最终会调用instatiateItem()
关联的PagerAdapter
. 这是您通常直接或通过具体子类之一实现的部分。
如果在此过程中发生了某些变化,即当支持数据集发生变化时,或者当setOffscreenPageLimit()
再次使用不同的值调用时,项目可能会从内部列表中删除,并且通常会destroyItem()
在之后调用。PagerAdapter
这是否回答你的问题?如果没有,请尝试比单行更具体一点 - 这应该有助于我们更好地帮助您。:)
于 2013-07-24T07:26:13.347 回答