zoukankan      html  css  js  c++  java
  • 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都设置为不可点击状态。

          当缺少了这个判断时,造成的后果是:当界面无数据,点击这两个按钮,程序会停止运行! 

    修改如下:

     1         cl = new Button.OnClickListener() {
     2             @Override
     3             public void onClick(View v) {
     4                 // 加一个判断,假如没数据,两个button都是灰色的
     5                 if (listDatas.size() == 0) {
     6                     btnLeft.setEnabled(false);
     7                     btnRight.setEnabled(false);
     8                 } else {
     9                     switch (v.getId()) {
    10                     case R.id.queren_btnLeft:
    11                         leftView();
    12                         break;
    13 
    14                     case R.id.queren_btnRight:
    15                         rightView();
    16 
    17                         break;
    18                     }
    19                 }
    20             }
    21 
    22         };
    我是刚刚进入公司的Android实习生,菜鸟一枚,博客记录我犯过的错,收获的东西,学到的知识和技术,可能里面会有很多错误的地方,幼稚的地方,欢迎大家指出来,帮助我进步,但请别伤害我,我只是菜鸟一枚,我在努力争取进步。
  • 相关阅读:
    为什么未来是全栈project师的世界?
    剑指Offer面试题10(Java版):二进制中的1的个数
    arm-linux内存管理学习笔记(1)-内存页表的硬件原理
    高速掌握Lua 5.3 —— 字符串库 (2)
    C语言实现使用动态数组来构造栈结构
    [自学AndroidStudio系列]第二篇章:高速上手AS小技巧其一
    苹果新的编程语言 Swift 语言进阶(十三)--类型检查与类型嵌套
    JAVA 安装JDK注意事项
    hdu 1398 Square Coins(母函数)
    百度有道雅虎的实习面试经历
  • 原文地址:https://www.cnblogs.com/smilefortoday/p/3974377.html
Copyright © 2011-2022 走看看