通过实践发现,尚大大在判断”上一页“按钮和”下一页按钮“是否可用的地方,有问题:

原代码:

 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 分页显示(转载+修改)下的更多相关文章

  1. ListView分页显示

    出在:http://blog.csdn.net/tu_bingbing/article/details/13275107         当ListView要显示的数据过多时,为了更快的响应用户,这个 ...

  2. ListView 分页显示(转载+修改)上

    实习工作中,分配到了一个给已经上线的android成品增加需求的任务,其中一项是给每个信息显示增加分页显示的功能(ListView的显示),于是上网查资料,看到了: 原地址:http://www.cn ...

  3. Sqlite 数据库分页查询(ListView分页显示数据)

    下面介绍一下我的这个demo. 流程简述: 我在raw文件夹下面放了名称为city的数据库,里面包含全国2330个城市,以及所属省,拼音简写等信息. 首先 在进入MainActivity的时候,创建数 ...

  4. 织梦仿站列表页pagelist分页显示竖排,如何修改成横排?

    织梦仿站列表页pagelist分页显示竖排,如何修改成横排? 织梦列表页的分页标签是采用pagelist来进行调用的,但是很多人在调用之后会出现一个列表竖着排列的问题(横排美观度好一些),还是非常不美 ...

  5. xcode6+ios8 横屏下启动画面不显示问题修改

    本文转载自汉果博客 » xcode6+ios8 横屏下启动画面不显示问题修改 最近我做游戏 发现xcode6+ios8 横屏下启动画面不显示   显示黑屏 . 设置横屏后 设置catalog 添加使用 ...

  6. ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(一)

    为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己的优点和缺点.如果需要对数据进行操作,如果数据量不大的情况下,DataList和Gr ...

  7. Android 自定义ListView实现底部分页刷新与顶部下拉刷新,androidlistview

    在项目开发中,由于数据过大时,需要进行分页加载或下拉刷新,来缓解一次性加载的过长等待.本篇博文实例讲解通过自定义的ListView实现底部分页加载和顶部下拉刷新的效果. 其效果图: 一.ListVie ...

  8. ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(二)

    使用ListView控件进行修改,删除与添加操作1.页面代码: <asp:ListView ID="lv2" runat="server" onpagep ...

  9. Android 它们的定义ListView实现底部和页下拉刷新刷新的顶

    在项目开发.由于数据量过大,寻呼需要加载或下拉刷新.为了缓解长期等待-time负载.这个博客的评论中被自己的定义实例ListView实现底部的下拉刷新页面正在加载结果和顶部. 其效果图: 一.List ...

随机推荐

  1. Understanding identities in IIS

    Understanding identities in IIS https://support.microsoft.com/en-my/help/4466942/understanding-ident ...

  2. DTED文件结构

    注:DTED层级为1时,每列总计2414字节,包含1201个高度信息:DTED层级为2时,每列总计7214字节,包含3601个高度信息:DTED层级为3时,每列包含9001个高度信息. 每列数据前八个 ...

  3. I2C总线协议详解

    I2C总线定义     I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.I2C总线产生于在80年代,最初为音 ...

  4. VSphere随笔 - vCenter6.5安装配置手册

    一.前期准备: 1.物理机准备 一台已安装了ESXI虚拟化系统的机器: 2.DNS服务器准备 新建一台DNS服务器,添加vcenter的双向解析. (1)安装一台win2008的机器 (2)开启DNS ...

  5. HTTP socket网络通信

    import socket class WebServer(): def __init__(self): ''' 1.创建总的socket 2.监听 :param self: :param addr: ...

  6. 洛谷 P1197 [JSOI2008]星球大战——并查集

    先上一波题目 https://www.luogu.org/problem/P1197 很明显删除的操作并不好处理 那么我们可以考虑把删边变成加边 只需要一波时间倒流就可以解决拉 储存删边顺序倒过来加边 ...

  7. 组件化框架设计之阿里巴巴开源路由框架——ARouter原理分析(一)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 背景 当项目的业务越来越复杂,业务线越来越多的时候,就需要按照业 ...

  8. Java_3.Java帮助文档

    1.Oracle的在线帮助文档 http://docs.oracle.com/javase/8/docs/api 2.jdk源码内容(包含5个部分) [以下内容参考至:https://blog.csd ...

  9. 再往DjVu鼓吹者的头上敲一棒子

    最近在某论坛又看到有人在鼓吹DjVu,甚至声称拿到PDG就转成DjVu,忍不住想再敲打敲打. 早几年前就已经有人举出过实例,证明PDG.TIFF转DjVu会因为有损压缩而产生错别字,似乎时间长了一堆新 ...

  10. sleep - 延迟指定数量的时间

    总览 (SYNOPSIS) sleep [OPTION]... NUMBER[SUFFIX] 描述 (DESCRIPTION) 暂停 NUMBER 秒. SUFFIX 如果 是 s, 指 暂停 的 秒 ...