ListView 分页显示(转载+修改)下
通过实践发现,尚大大在判断”上一页“按钮和”下一页按钮“是否可用的地方,有问题:
原代码:
 public void checkButton(){
        //索引值小于等于0,表示不能向前翻页了,以经到了第一页了。
        //将向前翻页的按钮设为不可用。
        if(index <=0){
            btnLeft.setEnabled(false);
        }
        //值的长度减去前几页的长度,剩下的就是这一页的长度,如果这一页的长度比View_Count小,表示这是最后的一页了,后面在没有了。
        //将向后翻页的按钮设为不可用。
        else if(data.length - index*VIEW_COUNT <= VIEW_COUNT){
            btnRight.setEnabled(false);
        }
        //否则将2个按钮都设为可用的。
        else {
            btnLeft.setEnabled(true);
            btnRight.setEnabled(true);
        }
原代码在两种情况下出现bug:
1.当数据长度<VIEW_COUNT时,出现问题
2、数据长度<2*VIEW_COUNT时(即只能显示两页),也会出现问题
修改后代码:
public void checkButton() {
        // 当本页是第一页时(index=0),数据条数少于每页的显示数目时,上一页按钮和下一页按钮都不能用
        if (index <= 0 && data.length <= VIEW_COUNT) {
            btnLeft.setEnabled(false);
            btnRight.setEnabled(false);
            // 当本页是第一页时(index=0),并且数据个数大于每页的显示数目时,上一页按钮不可以用,下一页按钮可以用
        } else if (index <= 0 && data.length > VIEW_COUNT) {
            btnLeft.setEnabled(false);
            btnRight.setEnabled(true);
        }
        // 值的长度减去前几页的长度,剩下的就是这一页的长度,如果这一页的长度比View_Count小,表示这是最后的一页了,后面在没有了。
        // 将向后翻页的按钮设为不可用。
        else if (index > 0
                && (data.length - index * VIEW_COUNT) <= VIEW_COUNT) {
            btnRight.setEnabled(false);
            btnLeft.setEnabled(true);
        }
        // 否则将2个按钮都设为可用的。
        else {
            btnLeft.setEnabled(true);
            btnRight.setEnabled(true);
        }
修改完了之后,就不会出现问题了(待会的放的项目代码中,初始化数据时,有这两种情况,改一下注释运行一下即可知道问题在哪里)
代码写进项目时注意:
1.第一次检测button的可用性时,将checkButton();放在 listview绑定adapter的代码下面
2.在Listview界面下面,加上两个button时,很容易出现listView将button给覆盖掉,解决这个问题,会在后面的博客中写出来解决方法。
3.在项目中引用时,当有返回上一页的按钮时,在onClick()事件时,在里面放一句:index=0; 这样在重新点击本页面时,数据会重新刷新,显示第一页,否则将停留在上次的页面!
提示:下载代码前看一下下面的补充
2014年10月11日11:49:47
注意:在项目后来的测试中,还发现一个问题:
在两个Button(上一页,下一页)的点击事件中,缺少了一个判断:即当界面中无加载数据时,应该将两个Button都设置为不可点击状态。
当缺少了这个判断时,造成的后果是:当界面无数据,点击这两个按钮,程序会停止运行!
修改如下:
         cl = new Button.OnClickListener() {
             @Override
             public void onClick(View v) {
                 // 加一个判断,假如没数据,两个button都是灰色的
                 if (listDatas.size() == 0) {
                     btnLeft.setEnabled(false);
                     btnRight.setEnabled(false);
                 } else {
                     switch (v.getId()) {
                     case R.id.queren_btnLeft:
                         leftView();
                         break;
                     case R.id.queren_btnRight:
                         rightView();
                         break;
                     }
                 }
             }
         };
ListView 分页显示(转载+修改)下的更多相关文章
- ListView分页显示
		
出在:http://blog.csdn.net/tu_bingbing/article/details/13275107 当ListView要显示的数据过多时,为了更快的响应用户,这个 ...
 - ListView 分页显示(转载+修改)上
		
实习工作中,分配到了一个给已经上线的android成品增加需求的任务,其中一项是给每个信息显示增加分页显示的功能(ListView的显示),于是上网查资料,看到了: 原地址:http://www.cn ...
 - Sqlite 数据库分页查询(ListView分页显示数据)
		
下面介绍一下我的这个demo. 流程简述: 我在raw文件夹下面放了名称为city的数据库,里面包含全国2330个城市,以及所属省,拼音简写等信息. 首先 在进入MainActivity的时候,创建数 ...
 - 织梦仿站列表页pagelist分页显示竖排,如何修改成横排?
		
织梦仿站列表页pagelist分页显示竖排,如何修改成横排? 织梦列表页的分页标签是采用pagelist来进行调用的,但是很多人在调用之后会出现一个列表竖着排列的问题(横排美观度好一些),还是非常不美 ...
 - xcode6+ios8 横屏下启动画面不显示问题修改
		
本文转载自汉果博客 » xcode6+ios8 横屏下启动画面不显示问题修改 最近我做游戏 发现xcode6+ios8 横屏下启动画面不显示 显示黑屏 . 设置横屏后 设置catalog 添加使用 ...
 - ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(一)
		
为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己的优点和缺点.如果需要对数据进行操作,如果数据量不大的情况下,DataList和Gr ...
 - Android 自定义ListView实现底部分页刷新与顶部下拉刷新,androidlistview
		
在项目开发中,由于数据过大时,需要进行分页加载或下拉刷新,来缓解一次性加载的过长等待.本篇博文实例讲解通过自定义的ListView实现底部分页加载和顶部下拉刷新的效果. 其效果图: 一.ListVie ...
 - ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(二)
		
使用ListView控件进行修改,删除与添加操作1.页面代码: <asp:ListView ID="lv2" runat="server" onpagep ...
 - Android 它们的定义ListView实现底部和页下拉刷新刷新的顶
		
在项目开发.由于数据量过大,寻呼需要加载或下拉刷新.为了缓解长期等待-time负载.这个博客的评论中被自己的定义实例ListView实现底部的下拉刷新页面正在加载结果和顶部. 其效果图: 一.List ...
 
随机推荐
- 2018-2019 ACM-ICPC Brazil Subregional Programming Contest    F. Music Festival
			
题目:https://codeforces.com/gym/101908/problem/F 题意:给你n个舞台,每个舞台有很多个节目,每个节目有个开始时间,结束时间,价值,每个舞台至少出演过一个节目 ...
 - arcgis api for javascipt 加载天地图、百度地图
			
写在前面的话: 1.百度地图是自己定义的坐标系统,wkid=102100.百度地图数据是加密的产物.下文将附上百度坐标与WGS84,谷歌等坐标系统转换方法(地理-地理),此方法并未亲测,据说准 2.百 ...
 - git filter-branch
			
https://github.com/git-for-windows/git/issues/2206 https://git-scm.com/docs/git-filter-branch The -- ...
 - error C2065: “CString”: 未声明的标识符 ;fatal error C1189: #error :  afxstr.h can only be used in MFC proje
			
转自VC错误:http://www.vcerror.com/?p=1388 问题描述: error C2065: "CString": 未声明的标识符 fatal error C1 ...
 - phpstorm中sass编译时目录或内容包含中文字符报错
			
ruby版本:ruby 2.4.1p111 (2017-03-22 revision 58053) [x64-mingw32] sass版本:Sass 3.4.24 (Selective Steve) ...
 - Selenium:多表单(frame/iframe)切换(Switch模块)
			
frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素 比如下面这个网 ...
 - HTML表单实例
			
HTML表单 表单用于搜集不同类型的用户输入,表单由不同类型的标签组成,实现一个特定功能的表单区域(比如:注册), 首先应该用<form>标签来定义表单区域整体,在此标签中再使用不同的表单 ...
 - Mysql 2019-07-01
 - Cocos2d 之FlyBird开发---MainMenu类
			
| 版权声明:本文为博主原创文章,未经博主允许不得转载. MainMenu类主要实现的是游戏主界面的布局,它相当于一个港口,有开向各处的航道,而游戏中的MainMenu则是有跳转到各个场景的一个集 ...
 - 洛谷 P1462 通往奥格瑞玛的道路——二分+spfa
			
上一波链接 https://www.luogu.org/problem/P1462 这道题我们考虑二分答案 然后每次跑一次spfa判断是否能够到达n点 tips:在不考虑负权边的前提下我们写最短路最好 ...