文档章节

ViewPager倒序并分页功能的显示

西米小娅
 西米小娅
发布于 2015/06/12 18:24
字数 564
阅读 52
收藏 0

    最近需要做一个功能,就是用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--;
                    }
                }
            }
        }

 

© 著作权归作者所有

共有 人打赏支持
西米小娅

西米小娅

粉丝 4
博文 64
码字总数 28244
作品 0
南京
加载中

评论(1)

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

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

一别经年
2014/01/21
0
0
Android 打造一个丝滑的自动轮播控件

现在很多的 App 都有自动轮播的 banner 界面,用于展示广告图片或者显示当前比较热门的一些活动,除了具备比较酷炫的效果之外,通过轮播的方式来减少对界面的占用,也是很赞的一个设计点。本...

developerHaoz
08/08
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
根据Fragment布局高度来自动适应的Viewpager

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

遇见sunshine
07/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20.27 分发系统介绍~ 20.30 expect脚本传递参数

分发系统介绍分发系统-expect讲解(也就是一个分发的脚本)场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因...

洗香香
26分钟前
1
0
设计一个百万级的消息推送系统

前言 首先迟到的祝大家中秋快乐。 最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。 鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两...

crossoverJie
32分钟前
1
0
软件架构:5种你应该知道的模式

Singleton(单例模式)、仓储模式(repository)、工厂模式(factory)、建造者模式(builder)、装饰模式(decorator)……大概每个上课听讲的程序员都不会陌生——软件的设计模式为我们提供...

好雨云帮
44分钟前
2
0
OSChina 周二乱弹 —— 这只是一笔金钱交易

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《暮春秋色》- 窦唯 / 译乐队 《暮春秋色》- 窦唯 / 译乐队 手机党少年们想听歌,请使劲儿戳(这里) @我没有抓狂:跨服聊...

小小编辑
55分钟前
617
16
df命令、du命令 、磁盘分区

9月25日任务 4.1 df命令 4.2 du命令 4.3/4.4 磁盘分区 4.1、命令 :df #磁盘空间使用情况 [root@zgxlinux-02 ~]# df 按字节显示 1000Byte=1KB 1000KB=1MB 1000MB=1GB ...

zgxlinux
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部