• ViewPager 重新加载 及 PagerAdapter 使用


    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中移出当前View
    3. 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()

  • 相关阅读:
    MYSQL基础02DML操作数据8
    MYSQL基础02SQL5
    SpringSecurity权限管理系统实战—四、整合SpringSecurity(上)
    SpringSecurity权限管理系统实战—三、主要页面及接口实现
    SpringSecurity权限管理系统实战—九、数据权限的配置
    SpringSecurity权限管理系统实战—八、AOP 记录用户、异常日志
    SpringSecurity权限管理系统实战—六、SpringSecurity整合JWT
    SpringSecurity权限管理系统实战—二、日志、接口文档等实现
    SpringSecurity权限管理系统实战—五、整合SpringSecurity(下)
    SpringSecurity权限管理系统实战—七、处理一些问题
  • 原文地址:https://www.cnblogs.com/kevin-chen/p/5673754.html
Copyright © 2020-2023  润新知