listview实现上一页下一页
来源:互联网 发布:acl审计软件 编辑:程序博客网 时间:2024/04/28 06:57
列表的显示需要三个元素:
1.ListVeiw 用来展示列表的View。
2.适配器 用来把数据映射到ListView上的中介。
3.数据 具体的将被映射的字符串,图片,或者基本组件。
根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。 SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。
当数据罗列过多的时候,我们需要Listview分页显示,此时怎么办呢
下面一个简单的例子介绍一下
- package com.ideasandroid.demo;
- 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.listview);
- //加载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;
- }
- }
- }
package com.ideasandroid.demo;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.listview); //加载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; } } }
- listview实现上一页下一页
- ListView 实现上一页下一页功能
- jquery实现上一页 下一页
- jquery实现上一页下一页
- jquery实现上一页下一页插件
- 分页实现-----首页、上一页、下一页、最后一页
- js上一页,下一页
- 上一页下一页js
- java实现的分页方法(上一页下一页)
- 通过javascript来实现上一页 ,下一页的禁用
- gridview实现:上一页、下一页、跳转到某一页
- java 实现JSP页面上一页及下一页封装
- PHP实现上一页下一页翻页代码实例
- php+mysql实现分页:上一页,下一页
- Android开发实现上一页,下一页显示内容
- 分页(上一页,下一页)
- wordpress post 的上一页 下一页
- dede 分页 上一页 下一页
- 立体效果的渐进条的绘制方法
- ( IDE ) || ( !IDE ) 来选择程序员的等级
- YII框架分析笔记7:挂件widget
- 话说JAVA SOCKET同步点对点聊天程序实例 1.0
- VS2010包含windows.h时winsock2.h出现"fd_set":struct类型重定义
- listview实现上一页下一页
- Android数据存储之ContentProvider存储数据
- poll服务端程序例子
- VS2010环境下Winpcap配置方法
- 宽屏玩魔兽,注册表编写
- Java学习从入门到精通
- #与##涵义
- Android数据存储网络存储数据
- 如何用U盘安装Ubuntu