博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView 分页显示(转载+修改)上
阅读量:5051 次
发布时间:2019-06-12

本文共 5128 字,大约阅读时间需要 17 分钟。

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

原地址:

大大的文章,在使用了尚大大的代码后,确实解决了问题,但是在使用过程中,发现了其中的问题,自己做了一些修改,待会将 如何修改、 项目源码 在下一篇文章中 贴出来:


尚大大的文章:

package com.anddev.ListMore.Test; import android.app.Activity; import android.os.Bundle; import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;public class ListMoreTest extends Activity {    ListView lv;    Button btnLeft, btnRight;        View.OnClickListener cl;        MoreAdapter ma;        String[] data = {            "0","1","2","3","4","5","6","7","8","9","10",            "11","12","13","14","15","16","17","18","19","20",            "21","22","23","24","25","26","27","28","29","30",            "31","32","33","34","35","36","37","38","39","40",            "41","42","43","44","45","46","47","48","49","50",            "51","52","53","54","55","56","57","58","59","60",            "61","62","64","64","65","66","67","68","69","70",            "71","72","73","74","75","76","77","78","79","80",            "81","82","83","84","85","86","87","88","89","90",            "91","92","93","94","95","96","97","98","99","100"    };        //用于显示每列5个Item项。    int VIEW_COUNT = 5;        //用于显示页号的索引    int index = 0;        /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                //加载Listview和2个Button        initView();                //设置ListView的Adapter        ma = new MoreAdapter(this);        lv.setAdapter(ma);                        cl = new Button.OnClickListener(){            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                switch(v.getId()){                case R.id.btnLeft:                    leftView();                    break;                                    case R.id.btnRight:                    rightView();                    break;                }            }        };                //添加2个Button的监听事件。        btnLeft.setOnClickListener(cl);        btnRight.setOnClickListener(cl);                //检查2个Button是否是可用的        checkButton();            }        public void initView(){        lv = (ListView)findViewById(R.id.list);                btnLeft = (Button)findViewById(R.id.btnLeft);        btnRight = (Button)findViewById(R.id.btnRight);            }        //点击左边的Button,表示向前翻页,索引值要减1.    public void leftView(){        index--;                //刷新ListView里面的数值。        ma.notifyDataSetChanged();                //检查Button是否可用。        checkButton();    }      //点击右边的Button,表示向后翻页,索引值要加1.    public void rightView(){        index++;                //刷新ListView里面的数值。        ma.notifyDataSetChanged();                //检查Button是否可用。        checkButton();    }        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);        }            }        //ListView的Adapter,这个是关键的导致可以分页的根本原因。    public class MoreAdapter extends BaseAdapter {        Activity activity;        public MoreAdapter(Activity a){            activity = a;        }                        //设置每一页的长度,默认的是View_Count的值。        @Override        public int getCount() {            // TODO Auto-generated method stub            //return data.length;                        //ori表示到目前为止的前几页的总共的个数。            int ori = VIEW_COUNT * index;                        //值的总个数-前几页的个数就是这一页要显示的个数,如果比默认的值小,说明这是最后一页,只需显示这么多就可以了            if(data.length - ori < VIEW_COUNT ){                return data.length - ori;            }            //如果比默认的值还要大,说明一页显示不完,还要用换一页显示,这一页用默认的值显示满就可以了。            else {                return VIEW_COUNT;            }                    }        @Override        public Object getItem(int position) {            // TODO Auto-generated method stub            return position;        }        @Override        public long getItemId(int position) {            // TODO Auto-generated method stub            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub            //return addTestView(position);                        TextView tv = new TextView(activity);            tv.setGravity(Gravity.CENTER);            //TextView要显示的是当前的位置+前几页已经显示的位置个数的对应的位置上的值。            tv.setText(data[position+index*VIEW_COUNT]);            return tv;                    }    }}

布局文件:

结果显示:

 


     尚大大出现的问题,如何修改,项目源码:

转载于:https://www.cnblogs.com/smilefortoday/p/3974287.html

你可能感兴趣的文章
Android studio 混淆打包
查看>>
ES6学习笔记(五)-函数扩展
查看>>
统计学习方法笔记 -- 朴素贝叶斯
查看>>
PyQt5+python+pycharm开发环境配置
查看>>
python做语音信号处理
查看>>
App被拒选择回复还是重新提审,如何选择最高效的应对方式?
查看>>
第一阶段冲刺(第二天)
查看>>
四、优化及调试--网站优化--SEO在网页制作中的应用
查看>>
23个常用的文件处理方法
查看>>
51Nod 1182 完美字符串
查看>>
十天冲刺(5)
查看>>
C语言中关于strcry 引发的思考
查看>>
创建一个数组有三种方法
查看>>
Mysql了解及安装
查看>>
redis的string和list
查看>>
marquee标签详解
查看>>
黑马 StringBuffer
查看>>
dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul
查看>>
ThinkPHP--浏览历史
查看>>
iptables
查看>>