- 浏览: 181358 次
- 性别:
- 来自: 浙江
文章分类
最新评论
今天在使用ViewPager的时候发现个问题。
需求如下:
在ViewPager底下放入6个Fragment,每次移动ViewPager的时候更新里面的数据。
需求很简单。
我把每次刷新事件放入Fragment初始化中,发现ViewPager有个预缓存功能,至少会加载周边的一个Fragment。当滑动到周边的时候,会发现Fragment中数据没有变化。
我看了下Viewpager源码,v4包下的Viewpager至少加载周边一个Fragment,此值无法修改。
如继承Viewpager创建新控件,发现还是无法修改DEFAULT_OFFSCREEN_PAGES的作用。
如重新实现Viewpager类,发现有部分v4包下的内部类无法获取。不过网上有博客实现了viewPager的功能的新类。
不过问题又来了,我上边有个标题栏,实现滑动效果,使用的控件为android.support.design.widget.TabLayout 。此控件绑定Viewpager。方法为setupWithViewPager(viewPager)。发现自己写的viewpager无法作为此参数。
如果每次在Fragment初始化时加载数据,同时又在Veiwpager的change事件中再加载,会发现加载2次数据,与需求不符。
为了解决加载两次的这个问题,无意发现一个解决方案。
每个Fragement有各自的一个Tag,我通过此值来分辨不同的Fragment。
在Fragment初始化时,做判断,只当Fragment为第一个时,加载数据。代码如下:
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(Fragment.TYPE_ONE.equals(fileType)) {
loadInfo(fileType);
}
}
然后在Viewpager界面预加载所有Fragment。代码如下:
viewPager.setOffscreenPageLimit(fragmentList.size());
通过实现viewpager的滑动改变来重新加载数据:
viewPager.addOnPageChangeListener(this);
@Override
public void onPageSelected(int position) {
loadInfo(fileType);
}
测试发现当展现其中的一个Fragment的时候,保证加载一次数据。
需求如下:
在ViewPager底下放入6个Fragment,每次移动ViewPager的时候更新里面的数据。
需求很简单。
我把每次刷新事件放入Fragment初始化中,发现ViewPager有个预缓存功能,至少会加载周边的一个Fragment。当滑动到周边的时候,会发现Fragment中数据没有变化。
我看了下Viewpager源码,v4包下的Viewpager至少加载周边一个Fragment,此值无法修改。
如继承Viewpager创建新控件,发现还是无法修改DEFAULT_OFFSCREEN_PAGES的作用。
如重新实现Viewpager类,发现有部分v4包下的内部类无法获取。不过网上有博客实现了viewPager的功能的新类。
不过问题又来了,我上边有个标题栏,实现滑动效果,使用的控件为android.support.design.widget.TabLayout 。此控件绑定Viewpager。方法为setupWithViewPager(viewPager)。发现自己写的viewpager无法作为此参数。
如果每次在Fragment初始化时加载数据,同时又在Veiwpager的change事件中再加载,会发现加载2次数据,与需求不符。
为了解决加载两次的这个问题,无意发现一个解决方案。
每个Fragement有各自的一个Tag,我通过此值来分辨不同的Fragment。
在Fragment初始化时,做判断,只当Fragment为第一个时,加载数据。代码如下:
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(Fragment.TYPE_ONE.equals(fileType)) {
loadInfo(fileType);
}
}
然后在Viewpager界面预加载所有Fragment。代码如下:
viewPager.setOffscreenPageLimit(fragmentList.size());
通过实现viewpager的滑动改变来重新加载数据:
viewPager.addOnPageChangeListener(this);
@Override
public void onPageSelected(int position) {
loadInfo(fileType);
}
测试发现当展现其中的一个Fragment的时候,保证加载一次数据。
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 928使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 717java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 523我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 548Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 485先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 599相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 799参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 366图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 419参考链接:http://www.cnblogs.com/lwb ... -
clone方法的使用
2017-01-04 10:14 518由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2074Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 576最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 617以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 427参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 386参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1162参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2339参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 608http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 572用代码简单介绍下自定义控件的使用: 先看主activity: ... -
android使用html标签
2015-03-13 20:42 650有些时候我们需要在一个textview上,对部分字体进行特殊效 ...
相关推荐
ViewPager取消预加载专用jar包,修改android support v4后的
Android中ViewPager+Fragment懒加载问题解决方案Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
和正常viewpager使用方法一样,只不过这个viewpager是禁止预加载的
android Viewpager 动态加载
ViewPager+ListView上拉加载下拉刷新,,,
两个ViewPager2嵌套,同一方向无法滑动,可以在子 ViewPager2 外面嵌套一层 NestedScrollableHost.
完美解决解决viewpager嵌套viewpager,子viewpager轮播白屏的问题,顺带解决viewpager懒加载,自定义listview上拉加载等等问题。 网络下载用了universal-image-loader框架。自己做项目遇到问题,网上demo一直不可用...
重写了子viewpager的方法,...解决了父viewpager不能滑动或者子viewpager不能滑动问题。修改了事件的分发。可以使子viewpager滑动到最后一页后直接滑入父viewpager的fragment。修改子viewpager可参考local.xml 。
安卓sdk里自带的ViewPager是预加载的 有时需要不预加载的ViewPager,这个类满足这类需求 该类里使用了一些老版本的方法,我用的时候加了android-support-v13.jar才过的
我最近上班又遇到一个小难题了,就是如题所述:ViewPager预加载的问题。相信用过ViewPager的人大抵都有遇到过这种情况,网上的解决办法也就那么几个,终于在我自己不断试验之下,完美解决了(禁止了)ViewPager的预...
Android中利用ViewPager实现图片浏览器,其中整合了图片的异步加载与图片轮询播放。
viewpager里面动态的加载fragment.
该jar包是基于android 的android-support-v4jar 上对ViewPager进行了小小的改动,因为android原有的android-support-v4.jar里面的ViewPager是不能通过setOffscreenPageLimit(0)取消预加载的,所以要想取消ViewPager...
当ViewPager 嵌套时,子ViewPager,不能优先处理滑动事件。 玩一下 网易新闻 ...此Demo完美解决ViewPager嵌套的滑动问题,但快速滑动父ViewPager,再滑动ViewPager还是被父ViewPager处理了,正常操作,都是正常的。
ViewPager的屏蔽预加载,并且在代码中设置,不预加载
主要为大家详细介绍了Android使用ViewPager加载图片和轮播视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
android 不会进行预加载的ViewPager
这个网址必须收藏,解决viewpager嵌套viewpager和其他view 冲突问题
通过ViewPager动态加载View里面的数据