ViewPager的数据是通过PageAdapter来装载的,刷新数据的方法有以下:

  1. 调用adapter.notifyDataSetChanged(); 刷新控件,但是要覆盖PagerAdapter的getItemPosition方法,并返回 return POSITION_NONE;

  2. 利用PagerAdapter的工作机制,就是PagerAdapter的执行顺序, PagerAdapter作为ViewPager的适配器,无论ViewPager有多少页,PagerAdapter在初始化时也只初始化开始的2个View,即调用2次instantiateItem方法。而接下来每当ViewPager滑动时,PagerAdapter都会调用destroyItem方法将距离该页2个步幅以上的那个View销毁,以此保证PagerAdapter最多只管辖3个View,且当前View是3个中的中间一个,如果当前View缺少两边的View,那么就instantiateItem,如里有超过2个步幅的就destroyItem。

  3. 每当Adapter调用instantiateItem时,运用View.setTag方法将该View标识。当需要更新这个View的数据时,通过调用ViewPager.findViewWithTag方法找到相应的View,然后更新View中的数据。

ViewPager刷新原理的更多相关文章

  1. Android ViewPager刷新解析

    ViewPager刷新解析 原本以为PagerAdapter类似于BaseAdapter 但是使用起来发现刷新还是有区别的 解析如下 先上Demo PagerAdapter的四大函数 getCount ...

  2. Options Menu的android3.0以上和以下版本显示刷新原理,刷新适配

    一 显示区别: 2.3.x及以下版本,需要按菜单键显示菜单,当菜单打开时,第一个可见的部分是图标菜单,最多可容纳6个菜单项.如果你的菜单包括Android的地方超过6项,第六项,其余将被归到”More ...

  3. SpringCloud 详解配置刷新的原理 使用jasypt自动加解密后 无法使用 springcloud 中的自动刷新/refresh功能

    之所以会查找这篇文章,是因为要解决这样一个问题: 当我使用了jasypt进行配置文件加解密后,如果再使用refresh 去刷新配置,则自动加解密会失效. 原因分析:刷新不是我之前想象的直接调用conf ...

  4. Android 学习笔记之AndBase框架学习(六) PullToRefrech 下拉刷新的实现

    PS:Struggle for a better future 学习内容: 1.PullToRefrech下拉刷新的实现...   不得不说AndBase这个开源框架确实是非常的强大..把大部分的东西 ...

  5. PagerAdapter刷新问题

    一.PagerAdapter介绍 PagerAdapter简介 ListView 大家应该都很熟悉吧!ListView 一般都需要一个 Adapter 来填充数据,如 ArrayAdapter.Sim ...

  6. servlet-响应的定时刷新

    package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.ser ...

  7. (五)F5和CTRL+F5两种刷新的区别

    一.刷新原理不同: F5触发的HTTP请求的请求头中通常包含了If-Modified-Since 或 If-None-Match字段,或者两者兼有. CTRL+F5触发的HTTP请求的请求头中没有上面 ...

  8. Ajax|看这一篇就够了!详解Ajax工作原理及开发步骤

    传统开发的缺点,是对于浏览器的页面,全部都是全局刷新的体验.如果我们只是想取得或是更新页面中的部分信息那么就必须要应用到局部刷新的技术. 局部刷新也是有效提升用户体验的一种非常重要的方式. Ajax技 ...

  9. Android笔记——Android自定义控件

    目录: 1.自定义控件概述 01_什么是自定义控件 Android系统中,继承Android系统自带的View或者ViewGroup控件或者系统自带的控件,并在这基础上增加或者重新组合成我们想要的效果 ...

随机推荐

  1. Linux 下的 python 虚拟环境 + vim快捷方式

    day04虚拟环境 https://www.cnblogs.com/pyyu/p/9015317.html 博客 关闭防火墙: systemctl stop firewalld # 关闭防火前 sys ...

  2. jQuery中$.each()方法的使用

    $.each()是对数组,json和dom结构等的遍历,说一下他的使用方法吧. 1.遍历一维数组 var arr1=['aa','bb','cc','dd']; $.each(arr1,functio ...

  3. handsontable合并表头

    想在页面中做类似excel的操作,发现handsontable符合要求. 然后发现这个文章 http://blog.csdn.net/wynan830/article/details/9054195 ...

  4. 在Winform开发框架中下拉列表绑定字典以及使用缓存提高界面显示速度

    在我们开发Winform界面的时候,往往需要绑定数据字典操作,也就是绑定一些下拉列表或者一些列表显示等,以便我们方便选择数据操作,常见的字典绑定操作就是对下拉列表的处理,本篇随笔是基于DevExpre ...

  5. netcore开发windows普通服务(非Web)并一键发布到服务器

    如何开发并一键发布WindowsService项目(netcore普通项目) netcore下开发windows服务如果是web项目的话,由于aspnetcore本身是支持的,把默认的host.Run ...

  6. vue兄弟之间传值 bus中央事件总线

    创建一个eventVue.js文件 import Vue from 'vue' export default new Vue 父 <template> <div> <di ...

  7. nginx简单的命令

    nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出 nginx nginx -t #测试配置是否有语法错误 nginx [-?hvVtq] [-s si ...

  8. springboot开启事务支持时报代理错误

    问题:The bean 'xxx' could not be injected as a 'com.github.service.xx' because it is a JDK dynamic pro ...

  9. RabbitMQ的一些有用教程

    最近学习了一些RabbitMQ的知识,现在对所阅读过的一些非常优秀的教程进行总结,感谢各位博主和大神的无私奉献. 一.原理篇 https://blog.51cto.com/lookingdream/2 ...

  10. RabbitMQ之php-amqplib使用

    PHP下使用rabbitmq可以使用第三方类库来实现 技术参考: https://rabbitmq.shujuwajue.com/tutorials_with_php/[1]Hello_World.h ...