- 浏览: 184969 次
- 性别:
- 来自: 浙江
文章分类
最新评论
今天在使用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 983使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 748java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 594我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 587Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 522先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 639相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 850参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 402图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 458参考链接:http://www.cnblogs.com/lwb ... -
clone方法的使用
2017-01-04 10:14 552由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2112Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 611最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 670以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 469参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 423参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1222参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2376参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 638http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 610用代码简单介绍下自定义控件的使用: 先看主activity: ... -
android使用html标签
2015-03-13 20:42 707有些时候我们需要在一个textview上,对部分字体进行特殊效 ...
相关推荐
3. **监听ViewPager的滑动事件**:可以通过`ViewPager.addOnPageChangeListener()`添加一个`PageChangeListener`,在` onPageSelected()`方法中判断是否是当前选中的`Fragment`,如果是,则执行加载数据的逻辑。...
在Android应用开发中,"轮播图ViewPager+ViewPager指示器+可刷新加载的ListView"是一个常见的组件组合,常用于构建类似新闻客户端、电商应用等需要展示丰富内容的界面。下面将详细讲解这些组件的工作原理、如何实现...
这意味着如果你当前在第一页,ViewPager会加载第二页和第三页。可以通过`setOffscreenPageLimit(int limit)`方法调整预加载的页面数量。 5. **自定义页面指示器** 虽然ViewPager自身没有内置的页面指示器,但可以...
为了解决这个问题,我们可以使用`ViewPager`的`addOnPageChangeListener`方法添加一个`PageChangeListener`。在这个监听器中,`onPageScrolled`方法会在页面滑动时被调用,提供当前位置、偏移量和滑动状态等信息。...
1. ViewPager组件:ViewPager是一个可以左右滑动查看多个页面的控件,常用于实现类似轮播图的效果。它需要一个PagerAdapter来提供页面。 2. 创建自定义PagerAdapter:继承PagerAdapter或FragmentPagerAdapter,重写...
ViewPager是Android平台中一个强大的视图滑动组件,主要用于实现多页面间的滑动切换效果,常见于应用的引导页、菜单栏以及图片轮播等场景。在这个“ViewPager翻页效果Demo”中,开发者分享了一个他认为实用的示例,...
6. **优化性能**: 由于ViewPager会预加载相邻的页面,所以如果每个页面都很复杂,可能会导致性能问题。可以通过设置`setOffscreenPageLimit(int limit)`来控制预加载的页面数量,以平衡性能和用户体验。 7. **数据...
在"ViewPagerDemo"项目中,开发者可能会创建一个包含多个图片的列表,然后通过`FragmentPagerAdapter`和自定义的Fragment类来加载和显示这些图片。同时,添加一个简单的指示器,完成一个基础的图片轮播效果。这个...
2. **无限循环**:要实现ViewPager的无限循环,我们需要在用户滑动到最后一个页面时显示第一个页面,反之亦然。这需要自定义PagerAdapter并重写`getCount()`方法以返回无限大的数量,同时在`instantiateItem()`和`...
ViewPager是Android平台中一个强大的视图滑动组件,主要用于实现页面间的左右滑动切换效果,常见于应用的引导页、菜单栏或者展示多个相关内容的场景。这个“ViewPager详解示例”将带你深入理解并掌握如何在Android...
无限轮播的核心思想是通过复制数据集的首尾元素,使用户在滑动到最后一项时能够无缝滑回至第一项,反之亦然,从而达到无边界的感觉。 2. **多图片展示**: - 传统的ViewPager通常只显示一个完整视图,但ViewPager...
在Android应用开发中,`ViewPager`是一个非常重要的组件,它允许用户通过左右滑动来浏览多个页面,这种交互方式在现代移动应用中广泛使用,比如社交媒体应用、新闻阅读器等。`ViewPager`的设计使得它可以流畅地展示...
初始状态下,只有第一个小点被选中(设置为白色或其他突出颜色)。每当ViewPager切换到新的页面时,我们根据当前页面索引更新小点的状态,将对应的小点设为选中,其他小点恢复为未选中状态。 在实际开发中,我们还...
`ViewPageIndicator`则是一个第三方库,由Jake Wharton开发,它为`ViewPager`提供了一种可视化的指示器,通常表现为底部的Tab标签。`ViewPageIndicator`提供了多种样式,如圆点、线条或者文字形式,可以方便地与`...
在Android开发中,ViewPager是一种常用的组件,用于展示多个页面并允许用户通过滑动来切换页面。通常,ViewPager会配合一个指示器(Indicator)来显示当前所处的页面。本篇文章将深入探讨如何实现ViewPager指示器的...
通过适配器的特殊实现,可以实现 `ViewPager` 的无限循环效果,使得用户在滑到最后一页时能够滑回第一页,反之亦然。 总的来说,`Android ViewPager` 是一个功能强大的组件,能够帮助开发者构建高度交互的应用界面...
ViewPager是Android平台中一个强大的视图滑动组件,常用于实现页面间的滑动切换效果,例如在应用的启动页、图片轮播或者Tab标签页等场景。它允许用户通过手势左右滑动来浏览多个相邻的页面,每个页面可以是任何类型...
在Android应用开发中,展示大量图片的一个常见需求是利用ViewPager组件来实现滑动浏览的效果。ViewPager是一个强大的控件,它可以创建一个可以左右滑动的页面视图,常用于实现图片轮播、应用导航等场景。在这个场景...
当用户滑到最后一页时,`setCurrentItem()`应将当前页设置为第一页,反之亦然。这可以通过监听`ViewPager`的`addOnPageChangeListener`来实现。 ```java viewPager.addOnPageChangeListener(new ViewPager....
一种常见方法是复制初始的数据集,形成一个“首尾相连”的新数据集,使得在用户滑动到最后一项时,看起来像是回到了第一项,实际上是在展示原始数据集的第一个元素。这需要在PagerAdapter的`instantiateItem()`和`...