引言
我们知道ViewPager 如果切换的是Fragement,可以用FragmentPagerAdapter 或者 FragmentStatePagerAdapter,如果我们需要切换的是ImageView或者其他View,则需要继承使用PageAdapter,当然FragmentPagerAdapter和FragmentStatePagerAdapter也是实现的PagerAdapter。所以我们来分析下PagerAdapter.
PagerAdapter使用
当我们继承使用PagerAdapter的时候需要实现四个方法:
- instantiateItem(View container, int position) //根据postion创建page
- destroyItem(ViewGroup container, int position, Object object) //根据postion移除page
- getCount() //得到page数目
- isViewFromObject(View view, Object object) //判断instantiateItem创建的View是否与某个指定类型相等。
ViewPager绘制流程
SlidePagerAdapter adapter = new SlidePagerAdapter(getSupportFragmentManager());
//extends PagerAdapter
viewPager.setAdapter(adapter);
上面是使用ViewPager的常用方式,我们来看下setAdapter后发生了什么.
- 我们会看到setAdapter会调用populate()。然后我们来看下populate中执行了哪些方法。

startUpdate(ViewGroup container)表示ViewPager开始绘制
getCount然后获取page的数目。
我们再往下看


populate中会调用****addNewItem,addNewItem中调用instantiateItem(View container, int position)创建View
populate下面也会调用destroyItem等PagerAdapter的方法。这里我们就不做过多的介绍了。
总结
- ViewPager的适配器都要继承使用PagerAdapter,如果扩展滑动其他View,实现PagerAdapter即可
- ViewPager实现绘制的主流程在populate method中实现。
网友评论