利用ListView進行分頁
阿新 • • 發佈:2019-01-26
package com.page;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivit extends Activity {
private ListView lv;
private MyAdapter ma ;
private Button pre,next;
// 用於顯示每列5個Item項。
private int VIEW_COUNT = 10;
View.OnClickListener vc ;
// 用於顯示頁號的索引
private int index = 0;
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" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
ma = new MyAdapter(this);
lv.setAdapter(ma);
vc = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.pre :
leftView();
break;
case R.id.next :
rightView();
break;
}
}
};
pre.setOnClickListener(vc);
next.setOnClickListener(vc);
checkButton();
}
private void initView() {
lv = (ListView)findViewById(R.id.list);
pre = (Button)findViewById(R.id.pre);
next = (Button)findViewById(R.id.next);
}
public void leftView(){
index --;
ma.notifyDataSetChanged();
checkButton();
}
public void rightView(){
index ++ ;
ma.notifyDataSetChanged();
checkButton();
}
public void checkButton(){
//索引值小於等於0,表示不能向前翻頁了,以經到了第一頁了。
//將向前翻頁的按鈕設為不可用。
if(index <= 0){
pre.setEnabled(false);
}
//值的長度減去前幾頁的長度,剩下的就是這一頁的長度,如果這一頁的長度比View_Count小,表示這是最後的一頁了,後面在沒有了。
//將向後翻頁的按鈕設為不可用。
else if(data.length - index * VIEW_COUNT < VIEW_COUNT){
next.setEnabled(false);
}else{
pre.setEnabled(true);
next.setEnabled(true);
}
}
/**
* ListView的Adapter,這個是關鍵的導致可以分頁的根本原因。
*
* @author Administrator
*/
class MyAdapter extends BaseAdapter {
private Activity activity;
public MyAdapter(Activity activity) {
this.activity = activity;
}
// 設定每一頁的長度,預設的是View_Count的值。
@Override
public int getCount() {
// ori表示到目前為止的前幾頁的總共的個數。
int ori = VIEW_COUNT * index;
/**
* 值的總個數-前幾頁的個數就是這一頁要顯示的個數,如果比預設的值小,說明這是最後一頁, 只需顯示這麼多就可以了
*/
if (data.length - ori < VIEW_COUNT) {
return data.length - ori;
}
// 如果比預設的值還要大,說明一頁顯示不完,還要用換一頁顯示,這一頁用預設的值顯示滿就可以了。
return VIEW_COUNT;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(activity);
tv.setGravity(Gravity.CENTER);
// TextView要顯示的是當前的位置+前幾頁已經顯示的位置個數的對應的位置上的值。
tv.setText(data[position + index * VIEW_COUNT]);
return tv;
}
}
}
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivit extends Activity {
private ListView lv;
private MyAdapter ma ;
private Button pre,next;
// 用於顯示每列5個Item項。
private int VIEW_COUNT = 10;
View.OnClickListener vc ;
// 用於顯示頁號的索引
private int index = 0;
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" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
ma = new MyAdapter(this);
lv.setAdapter(ma);
vc = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.pre :
leftView();
break;
case R.id.next :
rightView();
break;
}
}
};
pre.setOnClickListener(vc);
next.setOnClickListener(vc);
checkButton();
}
private void initView() {
lv = (ListView)findViewById(R.id.list);
pre = (Button)findViewById(R.id.pre);
next = (Button)findViewById(R.id.next);
}
public void leftView(){
index --;
ma.notifyDataSetChanged();
checkButton();
}
public void rightView(){
index ++ ;
ma.notifyDataSetChanged();
checkButton();
}
public void checkButton(){
//索引值小於等於0,表示不能向前翻頁了,以經到了第一頁了。
//將向前翻頁的按鈕設為不可用。
if(index <= 0){
pre.setEnabled(false);
}
//值的長度減去前幾頁的長度,剩下的就是這一頁的長度,如果這一頁的長度比View_Count小,表示這是最後的一頁了,後面在沒有了。
//將向後翻頁的按鈕設為不可用。
else if(data.length - index * VIEW_COUNT < VIEW_COUNT){
next.setEnabled(false);
}else{
pre.setEnabled(true);
next.setEnabled(true);
}
}
/**
* ListView的Adapter,這個是關鍵的導致可以分頁的根本原因。
*
* @author Administrator
*/
class MyAdapter extends BaseAdapter {
private Activity activity;
public MyAdapter(Activity activity) {
this.activity = activity;
}
// 設定每一頁的長度,預設的是View_Count的值。
@Override
public int getCount() {
// ori表示到目前為止的前幾頁的總共的個數。
int ori = VIEW_COUNT * index;
/**
* 值的總個數-前幾頁的個數就是這一頁要顯示的個數,如果比預設的值小,說明這是最後一頁, 只需顯示這麼多就可以了
*/
if (data.length - ori < VIEW_COUNT) {
return data.length - ori;
}
// 如果比預設的值還要大,說明一頁顯示不完,還要用換一頁顯示,這一頁用預設的值顯示滿就可以了。
return VIEW_COUNT;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(activity);
tv.setGravity(Gravity.CENTER);
// TextView要顯示的是當前的位置+前幾頁已經顯示的位置個數的對應的位置上的值。
tv.setText(data[position + index * VIEW_COUNT]);
return tv;
}
}
}