603
技術社區[雲棲]
Android ListView 按鈕點擊分頁顯示
列表的顯示需要三個元素:
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; } } }HeaderBottomListDemo_MORE_PAGES_.rar (473.5 KB)
最後更新:2017-04-02 22:15:49