Android: BaseAdapter 实现分页

来源:互联网 发布:建房成本计算器软件 编辑:程序博客网 时间:2024/06/05 05:00
小记记代码  收藏代码
  1.  列表的显示需要三个元素:  
  2. 1.ListVeiw 用来展示列表的View。  
  3. 2.适配器 用来把数据映射到ListView上的中介。  
  4. 3.数据    具体的将被映射的字符串,图片,或者基本组件。  
  5.   
  6. 根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter  
  7.   
  8. 其中以ArrayAdapter最为简单,只能展示一行字。  
  9.   
  10. SimpleAdapter有最好的扩充性,可以自定义出各种效果。   
  11.   
  12. SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。  
 

 

分页效果图:


 

Xml代码  收藏代码
  1.  <ListView  android:id="@+id/list"  
  2.      android:layout_width="fill_parent"   
  3.      android:layout_height="wrap_content"  />  
  4.   
  5. lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  6. android:orientation="horizontal" android:layout_width="fill_parent"  
  7. android:layout_height="wrap_content" android:gravity="bottom">  
  8.   
  9.  <Button  android:id="@+id/btnLeft"  
  10.      android:layout_width="150dip"   
  11.      android:layout_height="wrap_content"   
  12.      android:text="Previous Page" />  
  13.        
  14.  <Button  android:id="@+id/btnRight"  
  15.      android:layout_width="150dip"   
  16.      android:layout_height="wrap_content"   
  17.      android:text="Next Page" />  
  18. </LinearLayout>  

 

Java代码  收藏代码
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.view.Gravity;  
  4. import android.view.View;  
  5. import android.view.ViewGroup;  
  6. import android.widget.BaseAdapter;  
  7. import android.widget.Button;  
  8. import android.widget.ListView;  
  9. import android.widget.TextView;  
  10.   
  11. public class listMoreTest extends Activity {  
  12.       
  13.     int VIEW_COUNT = 10;  
  14.     int index = 0;  
  15.       
  16.     ListView listView;  
  17.     Button btnLeft, btnRight;  
  18.     View.OnClickListener clickListener;  
  19.     MyAdapter myAdapter;  
  20.     String[] data = { "0""1""2""3""4""5""6""7""8""9""10",  
  21.             "11""12""13""14""15""16""17""18""19""20""21",  
  22.             "22""23""24""25""26""27""28""29""30""31""32",  
  23.             "33""34""35""36""37" };  
  24.   
  25.     @Override  
  26.     public void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.listview);  
  29.   
  30.         initView();  
  31.   
  32.         // 设置ListView的Adapter  
  33.         myAdapter = new MyAdapter(this);  
  34.         // TODO 此处是双向绑定吗?  
  35.         listView.setAdapter(myAdapter);  
  36.   
  37.         clickListener = new Button.OnClickListener() {  
  38.             @Override  
  39.             public void onClick(View v) {  
  40.                 switch (v.getId()) {  
  41.                 case R.id.btnLeft:  
  42.                     leftView();  
  43.                     break;  
  44.                 case R.id.btnRight:  
  45.                     rightView();  
  46.                     break;  
  47.                 }  
  48.             }  
  49.         };  
  50.         btnLeft.setOnClickListener(clickListener);  
  51.         btnRight.setOnClickListener(clickListener);  
  52.   
  53.         changeButtonStatus();  
  54.     }  
  55.   
  56.     public void initView() {  
  57.         listView = (ListView) findViewById(R.id.list);  
  58.         btnLeft = (Button) findViewById(R.id.btnLeft);  
  59.         btnRight = (Button) findViewById(R.id.btnRight);  
  60.     }  
  61.   
  62.     /** 
  63.      * 点击左边的Button,表示向前翻页,索引值要减1. 
  64.      */  
  65.     public void leftView() {  
  66.         index--;  
  67.         // 刷新ListView里面的数值。  
  68.         myAdapter.notifyDataSetChanged();  
  69.         changeButtonStatus();  
  70.     }  
  71.   
  72.     /** 
  73.      * 点击右边的Button,表示向后翻页,索引值要加1. 
  74.      */  
  75.     public void rightView() {  
  76.         index++;  
  77.         // 刷新ListView里面的数值。  
  78.         myAdapter.notifyDataSetChanged();  
  79.         changeButtonStatus();  
  80.     }  
  81.   
  82.     /** 
  83.      * 变更btnLeft与btnRight按钮是否可用。 
  84.      */  
  85.     public void changeButtonStatus() {  
  86.         if (index <= 0) {  
  87.             btnLeft.setEnabled(false);  
  88.         } else if (data.length - index * VIEW_COUNT <= VIEW_COUNT) {  
  89.             btnRight.setEnabled(false);  
  90.         } else {  
  91.             btnLeft.setEnabled(true);  
  92.             btnRight.setEnabled(true);  
  93.         }  
  94.     }  
  95.   
  96.     // ListView的Adapter,这个是关键的导致可以分页的根本原因。  
  97.     public class MyAdapter extends BaseAdapter {  
  98.         Activity activity;  
  99.   
  100.         public MyAdapter(Activity a) {  
  101.             activity = a;  
  102.         }  
  103.   
  104.         /** 
  105.          * 设置每一页的长度,默认的是View_Count的值。 
  106.          */  
  107.         @Override  
  108.         public int getCount() {  
  109.             // ori表示到目前为止的前几页的总共的个数。  
  110.             int ori = VIEW_COUNT * index;  
  111.   
  112.             if (data.length - ori < VIEW_COUNT) {  
  113.                 return data.length - ori;  
  114.             } else {  
  115.                 return VIEW_COUNT;  
  116.             }  
  117.         }  
  118.           
  119.         /** 
  120.          * 显示TextView data。 
  121.          */  
  122.         @Override  
  123.         public View getView(int position, View convertView, ViewGroup parent) {  
  124.             // return addTestView(position);  
  125.             TextView textView = new TextView(activity);  
  126.             textView.setGravity(Gravity.LEFT);  
  127.             textView.setText(data[position + index * VIEW_COUNT]);  
  128.             return textView;  
  129.         }  
  130.   
  131.         @Override  
  132.         public Object getItem(int position) {  
  133.             return position;  
  134.         }  
  135.   
  136.         @Override  
  137.         public long getItemId(int position) {  
  138.             return position;  
  139.         }  
  140.     }  

0 0
原创粉丝点击