文档章节

ViewPager倒序并分页功能的显示

西米小娅
 西米小娅
发布于 2015/06/12 18:24
字数 564
阅读 47
收藏 0
点赞 1
评论 1

    最近需要做一个功能,就是用ViewPager显示每一天的数据。

    但是初始化的时候:1、显示最近十条数据 2、默认显示今天的数据  3、向左滑动显示昨天、前天及之前的数据。

    例如今天是 6.12。那么显示的顺序如下图所示:

    

6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12

    同时,还需要实现分页,也就是说界面滑动到6.3的时候,需要加载下一页的数据,但是还需要将数据加载到 6.3的前面

  

下面是具体的逻辑:

1、数据倒序查询出来以后,生成对应的View.然后list.add(0,view对象),记得是0

2、在OnPageChangeListener的实现类中的onPageSelected

    方法中,当position为0 的时候,需要查询下一页的数据。

   在查询数据之前,需要将viewpager中已经存在的view都destroy掉。

  具体的实现代码如下:

                //将viewpager中已经存在的view都destroy掉
                adapter.startUpdate(viewPager);
                for(int i = 0;i<adapter.getCount();i++){
                    adapter.destroyItem(viewPager,i,null);
                }
                adapter.finishUpdate(viewPager);

  destroy后,则需要重新添加数据,代码如下:

for(;nowCount < allCount;nowCount++){
            addView(nowCount+"",0);
        }
        adapter.setViews(temp);
        adapter.notifyDataSetChanged();
//            Log.i("test","[结果是]:"+(adapter.getCount()-steps)+"【界面中应该显示的是】:"+((TextView)temp.get(adapter.getCount()-steps)).getText().toString());
        viewPager.setCurrentItem(5,false);

切记:

.setCurrentItem(5,false); 需要不使用滑动动画,否则会出现空白界面

--其实最最重要的是调用 setCurrentItem 不要使用 动画效果

 

demo的下载地址:http://download.csdn.net/detail/u011379195/8800705

最近发现有一个问题,就是 在分页完成以后,setCurrentItem(10)紧邻的前面的界面不会显示出来

具体的解决方案是:在Adapter中getItemPosition方法的返回值设置成POSITION_NONE。即

public int getItemPosition(Object object) {
        return POSITION_NONE;//if the item is no longer present in the adapter
    }

还有ViewPager的OnPageChangeListener监听,需要在onPageScrollStateChanged方法中设置刷新数据:

如下所示:

public void onPageScrollStateChanged(int state) {// 滑动状态改变
            if(ViewPager.SCROLL_STATE_IDLE == state){
                if (mUpViewPager.getCurrentItem() == 0) {// 滑动到最后一页
                    mUpdatePage++;
                    //重新查询数据
                    int count = refreshStepsData(mUpdatePage,true);
                    if(count > 0){
                        mUpViewPagerAdapter.startUpdate(mUpViewPager);
                        for(int i = 0;i<mUpViewPagerAdapter.getCount();i++){
                            mUpViewPagerAdapter.destroyItem(mUpViewPager,i,null);
                        }
                        mUpViewPagerAdapter.finishUpdate(mUpViewPager);
                        mUpViewPagerAdapter.setListViews(mUpViewPagerList);// 重构adapter对象
                        mUpViewPagerAdapter.notifyDataSetChanged();// 刷新
                        mUpViewPager.setCurrentItem(count,false);
                    }else{
                        mUpdatePage--;
                    }
                }
            }
        }

 

© 著作权归作者所有

共有 人打赏支持
西米小娅

西米小娅

粉丝 3
博文 56
码字总数 23222
作品 0
南京
加载中

评论(1)

抗争的诗人
抗争的诗人
52
android中ViewPager详解--视图滑动、界面卡等效果 (一)

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一。利用它,我们可以做很多事情,从最简单的导航,到页面菜单...

一别经年
2014/01/21
0
0
RecyclerView 中嵌套ViewPager不显示

一个多种布局的RecyclerView中,有的item是图片,有的是文字,竟然还有的要是ViewPager! type可以通过getItemViewType来做,可ViewPager的setAdapter()没有显示 后来看了下文档,RecyclerV...

yaly
2015/08/31
0
4
Android开源控件ViewPager Indicator的使用方法

Android Viewpager Indicator是Android开发中最常用的控件之一,几乎所有的新闻类APP中都有使用,下面介绍其基本使用方法。 1. ViewPager Indicator的Library 查看Viewpager Indicator的Lib...

linsea
2014/03/14
0
0
借助Handler,实现ViewPager中页面的自动切换

在很多电商网页及app上都有自动切换的商品的推广快,感觉体验挺不错的,正好今天学习使用ViewPager,因此也实现了一个功能类似的demo。 下面是其中的两个截图: 实现一个自动播放功能的ViewP...

风荷举
2013/11/22
0
0
Android ViewPager使用详解

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等...

Remix_jx
2014/10/27
0
0
ViewPager+RadioButton仿QQ效果

RadioButton是自己定制的, 设置android:button="@null" 然后再设置backgroud。 涉及到的问题: 1、如何让RadioGroup在底部,且RadioGroup和Viewpager互不遮挡: 先定义RadioGroup,设置ali...

亓斌哥哥
2014/09/21
0
2
根据Fragment布局高度来自动适应的Viewpager

在最近的项目中,要用到ViewPager,但是viewpager是放在recycleview里面,高度是不确定的,只好重写measure方法来根据子布局的高度来动态生成viewpager的高度,但是有个缺点,就是不能根据子...

遇见sunshine
07/04
0
0
Android ViewPager和ScrollView嵌套滚动问题解决方案

问题描述: 我的嵌套是ViewPager-->ScrollView-->ViewPager. 首先最里面的ViewPager水平滚动时总是会触发最外层的ViewPager滚动,看了网上很多的解决办法基本上是一样的,需要自定义ViewPag...

冰珊孤雪
2015/04/22
0
2
ViewPager不能高度自适应?height=wrap_content 无效解决办法

/* http://my.oschina.net/lifj/blog/283346 */ ViewPager用的很多,主要用啦展示广告条。可是高度却不能自适应内容,总是会占满全屏,即使设置android:height="wrap_content"也是没有用的。...

拉风的道长
2014/06/24
0
9
用ViewPager实现欢迎引导页面

ViewPager需要android-support-v4.jar这个包的支持,来自google提供的一个附加包。大家搜下即可。 ViewPager主要用来组织一组数据,并且通过左右滑动的方式来展示。 现在的大多数应用都会有一...

zt1212
2012/10/15
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

深入理解springMVC

什么是spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而...

Java填坑之路
2分钟前
0
0
《射雕英雄传》书摘

1. 我虽是个飘泊江湖的贫家女子,可不是低三下四、不知自爱之人。你如真心爱我,须当敬我重我。我此生决无别念,就是钢刀架颈,也决意跟定了你。将来……将来如有洞房花烛之日,自然……自能...

k91191
13分钟前
0
0
解决:modal中datePicker 选中时,会触发modal的hidden.bs.modal事件

最近项目中发现了一个bug,具体表现为选中模态框上datepicker组件上的日期时,会触发模态框的关闭事件,导致数据编辑无法正常进行。网上搜索了下,解决方法如下: $('.datepicker').on('hid...

Funcy1122
16分钟前
0
0
matplotlib 绘图 常用设置

中文乱码 from pylab import mplmpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的...

阿豪boy
32分钟前
0
0
Redis分布式锁的正确实现方式

前言 分布式锁一般有三种实现方式: 1.数据库乐观锁 2.基于Redis的分布式锁; 3.基于Zookeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis...

大海201506
59分钟前
0
0
ClassNotFoundException: javax.el.ELManager

这个是因为tomcat7中的el-api2.2,有些版本太低,建议升级tomcat到8.0,利用el-api3.0就会解决这个问题。

无语年华
今天
0
0
Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)

在JVM中堆空间划分如下图所示 上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条 1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代 2.新生代可以划分为三个区,Eden区,两个幸...

嘻哈开发者
今天
1
0
CentOS 7.4 设置系统字符编码

1.语言变量LANG在 /etc/locale 文件中。 2.可以通过/ect/profile 来修改LC_TYPE 变量的值 添加如下代码 export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 到profile文件中,变量的可以修改...

qimh
今天
1
0
Kafka相关使用

安装前提,需要有jdk环境,还有zookeeper环境 zookeeper下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/ zookeeper安装参考:https://www.jianshu.com/p/f7037105db46 kafka的下......

朝如青丝暮成雪
今天
1
0
CentOS7 解决无法使用tab自动补全 tab代码提示

一、前言 对于刚刚开始学习linux的新人来说,linux的一切都显着神秘,只能惊叹于大牛在Linux上行云流水的操作。今天介绍一下在linux中自动补全的功能。 对于新人来说,在不懂得技巧的情况下,...

ziluopao
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部