PagerAdapter 简介
PagerAdapter是android.support.v4包中的类,它的子类有FragmentPagerAdapter, FragmentStatePagerAdapter,这两个adapter都是Fragment的适配器,用于实现Fragment的滑动效果,这两个adapter的使用和区别这次就先不介绍了,等下次有时间再做详细的介绍。
PagerAdapter主要是viewpager的适配器,而viewPager则也是在android.support.v4扩展包中新添加的一个强大的控件,可以实现控件的滑动效果,比如咱们在软件中常见的广告栏的滑动效果,用viewPager就可以实现。今天主要介绍如何使用viewPagr并重写PagerAdapter实现常见广告栏的滑动效果。
PagerAdapter用法简介
首先,如果继承pageradapter,至少必须重写下面的四个方法
1 instantiateItem(ViewGroup, int) ?返回对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPager中2. destroyItem(ViewGroup, int, Object)?ViewGroup中移出当前View3. getCount()?获取当前窗体界面数4. isViewFromObject(View, Object) ?用于判断是否由对象生成界面下面我们以代码的形式,说明这四个方法的含义以及如何使用
?
1 private class ViewPagerAdapter extends PagerAdapter {
2 // 获取要滑动的控件的数量,在这里我们以滑动的广告栏为例,那么这里就应该是展示的广告图片的ImageView数量
3 @Override
4 public int getCount() {
5 return 0;
6 }
7
8 // 来判断显示的是否是同一张图片,这里我们将两个参数相比较返回即可
9 @Override
10 public boolean isViewFromObject(View arg0, Object arg1) {
11 return arg0 == arg1;
12 }
13
14 // PagerAdapter只缓存三张要显示的图片,如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁
15 @Override
16 public void destroyItem(ViewGroup view, int position, Object object) {
17 }
18
19 // 当要显示的图片可以进行缓存的时候,会调用这个方法进行显示图片的初始化,我们将要显示的ImageView加入到ViewGroup中,然后作为返回值返回即可
20 public Object instantiateItem(ViewGroup container, int position) {
21 return container;
22 }
23
24 public int getItemPosition(Object object) {
25 View view = (View)object;
26 int currentPage = ((PhotoPageActivity)context).getCurrentPagerIdx(); // Get current page index
27 if(currentPage == (Integer)view.getTag()){
28 return POSITION_NONE;
29 }else{
30 return POSITION_UNCHANGED;
31 }
32 }
33 }
34 // Get current page index
35 pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
36
37 @Override
38 public void onPageSelected(int position) {
39 currentItem = position;
40 }
41
42 @Override
43 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
44 }
45
46 @Override
47 public void onPageScrollStateChanged(int state) {
48 }
49 });
50 // Return current index to Adapter
51 public int getCurrentPagerIdx() {
52 return currentItem;
53 }
如果想要刷新 直接调用notifyDataSetChanged()
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!