instantiateItem(ViewGroup, int) 方法为特定视图返回 Object。当 viewpager 更改页面时,PagerAdapter 实现将 Object 视为 key 值。
因此,如果我们从instantiateItem(ViewGroup, int) 返回视图本身,那么该页面的key 将成为视图本身。我们可以从isViewFromObject (View view, Object object) 中检查return view == object;,这将始终返回true,我们的页面将显示:
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
来自https://stackoverflow.com/a/16772250/1994950 帖子的更多见解:
当您滑动时,ViewPager 从数组中获取视图位置或将其实例化,然后使用适配器方法 public boolean isViewFromObject(View view, Object object) 将此视图与 ViewPager 的子视图进行比较。等于对象的视图在ViewPager 上显示给用户。如果没有视图,则显示空白屏幕。
这里是ViewPager 方法,用于将视图与对象进行比较:
ItemInfo infoForChild(View child) {
for (int i=0; i<mItems.size(); i++) {
ItemInfo ii = mItems.get(i);
if (mAdapter.isViewFromObject(child, ii.object)) {
return ii;
}
}
return null;
}