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 ...
随机推荐
- UOJ 450 【集训队作业2018】复读机——单位根反演
题目:http://uoj.ac/problem/450 重要式子: \( e^x = \sum\limits_{i=0}^{\infty} \frac{x^i}{i!} \) \( ( e^{a*x ...
- nRF51822学习笔记 之 blinky_example
使用的开发板是nRF51822 AK II,爱板网做活动买的. 开发资料可以去这里下载:链接: http://pan.baidu.com/s/1f8pD8 密码: 741y
- 建站手册-网站建设:Web 安全
ylbtech-建站手册-网站建设:Web 安全 1.返回顶部 1. http://www.w3school.com.cn/site/site_security.asp 2. 2.返回顶部 1. 此刻 ...
- leetcode-解题记录 557. 反转字符串中的单词 III
题目: 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例 1: 输入: "Let's take LeetCode contest" 输出 ...
- T1218:取石子游戏
[题目描述] 有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍,最后谁能够把一堆石子取空谁就算赢. 比如初始的时候两堆石子的数目是25和 ...
- python基础实现tcp文件传输
准备工作,实现文件上传需要那些工具呢? socket(传输).open()(打开文件).os(读取文件信息),当然还有辅助类sys和json,下面我们开始吧 import socket,sys imp ...
- Thymeleaf 遇到的问题
1. 后台传递long类型的值作为 js 执行方法的参数,精准度失效解决办法 解决办法:用thymeleaf的拼接字符串方法来解决 例:<button class="btn btn-p ...
- Add a system call on Ubuntu 13.04(x64) with x86_64
We added a system call to modify idt table, then programed it in modify_idt.c 1. Put our modify_idt. ...
- HDU 3571 N-dimensional Sphere( 高斯消元+ 同余 )
N-dimensional Sphere Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- 案例:使用xml存储数据
HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...