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)  用于判断是否由对象生成界面
下面我们以代码的形式,说明这四个方法的含义以及如何使用

  private class ViewPagerAdapter extends PagerAdapter {
// 获取要滑动的控件的数量,在这里我们以滑动的广告栏为例,那么这里就应该是展示的广告图片的ImageView数量
@Override
public int getCount() {
return 0;
} // 来判断显示的是否是同一张图片,这里我们将两个参数相比较返回即可
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
} // PagerAdapter只缓存三张要显示的图片,如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
} // 当要显示的图片可以进行缓存的时候,会调用这个方法进行显示图片的初始化,我们将要显示的ImageView加入到ViewGroup中,然后作为返回值返回即可
public Object instantiateItem(ViewGroup container, int position) {
return container;
} public int getItemPosition(Object object) {
View view = (View)object;
int currentPage = ((PhotoPageActivity)context).getCurrentPagerIdx(); // Get current page index
if(currentPage == (Integer)view.getTag()){
return POSITION_NONE;
}else{
return POSITION_UNCHANGED;
}
}
}
// Get current page index
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override
public void onPageSelected(int position) {
currentItem = position;
} @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
} @Override
public void onPageScrollStateChanged(int state) {
}
});
// Return current index to Adapter
public int getCurrentPagerIdx() {
return currentItem;
}

如果想要刷新 直接调用notifyDataSetChanged()

ViewPager 重新加载 及 PagerAdapter 使用的更多相关文章

  1. 关于禁止ViewPager预加载问题【转】

    转自:http://blog.csdn.net/qq_21898059/article/details/51453938#comments 我最近上班又遇到一个小难题了,就是如题所述:ViewPage ...

  2. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(一)

    Android ViewPager 中加载 Fragmenet的两种方式 一.当fragment里面的内容较少时,直接 使用fragment xml布局文件填充 文件总数 布局文件:view_one. ...

  3. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)

    接上文: https://www.cnblogs.com/wukong1688/p/10693338.html Android ViewPager 中加载 Fragmenet的两种方式 方式(一) 二 ...

  4. 【转】实现ViewPager懒加载的三种方法

    方法一 在Fragment可见时请求数据.此方案仍预加载了前后的页面,但是没有请求数据,只有进入到当前Framgent时才请求数据. 优点:实现了数据的懒加载缺点:一次仍是三个Framgment对象, ...

  5. ViewPager动态加载、删除页面

    很多人在网上说ViewPager的PagerAdapter.notifyDataSetChanged()无效.刚开始我也这样认为,甚至被误导以为是真理.   后来,找了一下,在PagerAdatpar ...

  6. viewPager动态加载listview数据

    废话不多说,先上效果图.(代码见附件) 代码是修改自某大神的,我做了很多修改,之前只能向右滑动,现在可以左右无限滑动,只要数据没加载完就可以一直滑动.过程不算复杂,代码主要的地方都有注释. 附件dem ...

  7. 硅谷新闻2--禁止viewpager预加载

    ContentFragment.java class MyOnPageChangeListener implements ViewPager.OnPageChangeListener { ..... ...

  8. 防止ViewPager和Fragment结合使用时候的数据预加载

    不知道你们使用ViewPager和Fragment结合的时候发现一个问题没,如果你的每个Fragment都需要请求网络数据,并且你在请求网络数据的时候会加入进度对话框的加载显示效果,当你显示第一个Fr ...

  9. viewpager处理(三):让viewpager不预加载下一页

    有时候viewpager加载页面的时候,我们发现页面的数据量很大,预加载的话会消耗性能,为了节省用户流量和手机性能,所以我们想让viewpager不自动预加载下一页,怎么实现呢? viewpager预 ...

随机推荐

  1. 如何利用mono把.net windows service程序迁移到linux上

    How to migrate a .NET Windows Service application to Linux using mono? 写在最前:之所以用要把windows程序迁移到Linux上 ...

  2. 【Win10】UAP/UWP/通用 开发之 x:Bind

    [Some information relates to pre-released product which may be substantially modified before it's co ...

  3. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术

    最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...

  4. 如何利用 Visual Studio 自定义项目或工程模板

    在开发项目的时候,由其是商业性质的大型项目时,往往需要在每个代码文件上都加上一段关于版权.开发人员的信息,并且名称空间上都需要带有公司的标志.这个时候,是选择在开发的时候手动添加还是自动生成呢? 我们 ...

  5. ★Kali信息收集~2.Whois :域名信息

     Web地址:http://whois.chinaz.com/ | http://www.whois.net/ 软件参数:whois  常用命令:whois 域名 (重点看whois server和R ...

  6. 原创:CSS3技术-雪碧图自适应缩放与精灵动画方案

    花了一个礼拜完成了慕课网定制的七夕主题效果,其中有一个没实现好的功能,就是雪碧图的自适应缩放 ps: 以下实现都是基于移动端的处理 原图如下: 人物是采用的是雪碧图,通过坐标绝对数据取值 问题很明显, ...

  7. NET Core-学习笔记(二)

    这里要分享的是接着上篇:NET Core-学习笔记(一)展开的继续学习core笔记,有不妥之处或者更好见解的地方希望各位朋友多多分享. 下面是本篇将要分享的学习步奏,对于刚学或者即将要学习的朋友做个相 ...

  8. angular2系列教程(三)components

    今天,我们要讲的是angualr2的components. 例子

  9. JSON(及其在ajax前后端交互的过程)小识

    一. json介绍 json是一种轻量级的数据交换格式,规则很简单: 并列的数据之间用逗号(,)分隔: 映射用冒号(:)表示: 并列数据的集合(数组)用方括号([])表示: 映射的集合(对象)用大括号 ...

  10. c 网络与套接字socket

    我们已经知道如何使用I/O与文件通信,还知道了如何让同一计算机上的两个进程进行通信,这篇文章将创建具有服务器和客户端功能的程序 互联网中大部分的底层网络代码都是用C语言写的. 网络程序通常有两部分组成 ...