博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewPager 的页面重置问题
阅读量:6702 次
发布时间:2019-06-25

本文共 958 字,大约阅读时间需要 3 分钟。

  当我们使用ViewPager控件时,假设我们的ViewPager有三页,当我们第一次启动ViewPager显示第一页的时候,ViewPager会预加载第二页,这样当我们向第二页滑动的时候就可以看见第二页的内容了,因为第二页的内容在第一页内容显示的时候就已经加载了。当我们滑动到第二页时,ViewPager会预加载第三页,这时ViewPager中已经保存了三页的内容:第一页,第二页和第三页,这样当我们在第二页向左或向右滑动ViewPager时能看到这三页的内容。

  我在使用ViewPager控件时遇到过这样的问题,像上面说明的那样,我在把ViewPager从第一页滑动到第三页的时候看到了这三页的内容,但是假设我在第一页中做了一些操作改变了第一页的内容,而我在第三页中也做了一些操作改变了第三页的内容,可是当我从第三页滑动到第一页时发现第一页的内容还原了,而当我再次从第一页滑动到第三页时发现第三页的内容也还原了。

  问题的根源在于ViewPage的加载页数,就是说你可以指定ViewPager预加载的页数,如果不指定,ViewPager默认加载一页。在这种情况下,ViewPage会加载当前显示页面相邻的还没有加载的页面。比如说,当前显示的是首页,因为首页的左边是没有页面的,所以ViewPager会加载第二页的内容;当ViewPager滑动到第二页的时候,因为第一页已经加载,所以不会重复加载,但是第三页还没有加载,所以ViewPager会加载第三页的内容;当ViewPager滑动到第三页的时候(假设ViewPager只有三页),因为第二页已经加载过了,而第三页的右边没有任何页面了,所以ViewPager不会加载任何界面。当从第三页滑动到第二页时,因为第三页已经加载过,所以不会重新加载,虽然第一页之前加载过,但是,ViewPager的默认加载为一页,而当ViewPager在第三页的时候第一页在默认加载之外,所以从第三页滑动到第二页的时候,ViewPager会重新加载第一页,而再从第一页滑动到第三页时是同样的道理,所以会出现我上面描述的情况。

  为了避免上述情况的发生我们可以通过调用ViewPager的setOffscreenPageLimit方法来指定加载的页数,从而得到我们想要的结果。

转载地址:http://xtgoo.baihongyu.com/

你可能感兴趣的文章
从表到里学习JVM实现
查看>>
关于数据库查询优化的思考
查看>>
如何在android studio中设置sdk path?
查看>>
iptables的SNAT和DNAT应用
查看>>
搭建LNMP遇到的问题
查看>>
java String类 常用函数
查看>>
Windows下C语言连接Oracle数据库
查看>>
Cacti 使用安装详解-企业级实例
查看>>
ASP.NET后台调用前台JS函数的三种常见方法
查看>>
MeasureSpec学习 - 转
查看>>
nodejs express
查看>>
系统设计学习
查看>>
iOS游戏开发 几个有利工具
查看>>
HashMap vs ConcurrentHashMap — 示例及Iterator探秘
查看>>
程序图片运行效果存在偏差问题
查看>>
基于环信sdk的陌生人交友php服务器代码开源
查看>>
STL 容器和迭代器连载6_顺序容器的操作3
查看>>
JDBC学习笔记——事务、存储过程以及批量处理
查看>>
Spring JDBC最佳实践(2)
查看>>
mysql查看binlog日志内容
查看>>