package com.wanghf.demo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.wanghf.demo.R;
public class ListViewForPagingActivity extends Activity {
/** Called when the activity is first created. */
ListView view;
Button btnUp, btnDown;
View.OnClickListener cl;
ListAdapter adapter;
List<Map<String, Object>> data;
Map<String, Object> map;
List<Map<String, Object>> list;
// 用於顯示每列10個Item項。
int VIEW_COUNT = 10;
// 用於顯示頁號的索引
int index = 0;
// 總列數
int batchCount = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.setTitle("ListViewForPaging");
view = (ListView) findViewById(R.id.listview);
btnUp = (Button) findViewById(R.id.but_up);
btnDown = (Button) findViewById(R.id.but_down);
// 初始化 元數據
data = getInitData();
cl = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.but_up:
upView();
break;
case R.id.but_down:
downView();
break;
}
}
};
// 添加2個Button的監聽事件。
btnUp.setOnClickListener(cl);
btnDown.setOnClickListener(cl);
checkButton();
String[] from = new String[] { "id", "name", "phone", "address" };
int[] to = new int[] { R.id.item1, R.id.item2, R.id.item3, R.id.item4 };
adapter = new ListAdapter(this, data, R.layout.result_table_four, from,
to);
view.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
private List<Map<String, Object>> getInitData() {
list = new ArrayList<Map<String, Object>>();
for (int i = 1; i < 100; i++) {
map = new HashMap<String, Object>();
map.put("id", i);
map.put("name", "wang" + i + "dan");
map.put("phone", "1870290" + i + "9");
map.put("address", "西安軟件園" + i + "號");
list.add(map);
}
return list;
}
// 點擊左邊的Button,表示向前翻頁,索引值要減1.
public void upView() {
index--;
// 刷新ListView裏面的數值。
// adapter.
adapter.notifyDataSetChanged();
// 檢查Button是否可用。
checkButton();
}
// 點擊右邊的Button,表示向後翻頁,索引值要加1.
public void downView() {
index++;
// 刷新ListView裏面的數值。
adapter.notifyDataSetChanged();
// 檢查Button是否可用。
checkButton();
}
public void checkButton() {
if (index <= 0) {
btnUp.setEnabled(false);
btnDown.setEnabled(true);
}
else if (list.size() - index * VIEW_COUNT <= VIEW_COUNT) {
btnUp.setEnabled(true);
btnDown.setEnabled(false);
} else {
btnUp.setEnabled(true);
btnDown.setEnabled(true);
}
}
public class ListAdapter extends SimpleAdapter {
private List<? extends Map<String, ?>> data;
LayoutInflater mInflater;
public ListAdapter(Context context, List<Map<String, Object>> mdata,
int resource, String[] from, int[] to) {
super(context, mdata, resource, from, to);
mInflater = LayoutInflater.from(context);
data = mdata;
}
// 設置每一頁的長度,默認的是View_Count的值。
@Override
public int getCount() {
// TODO Auto-generated method stub
// return data.length;
// ori表示到目前爲止的前幾頁的總共的個數。
int ori = VIEW_COUNT * index;
if (list.size() - ori < VIEW_COUNT) {
return list.size() - 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) {
ViewHolder holder;
// TODO Auto-generated method stub
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.result_table_four,
null);
holder.id = (TextView) convertView.findViewById(R.id.item1);
holder.name = (TextView) convertView.findViewById(R.id.item2);
holder.phone = (TextView) convertView.findViewById(R.id.item3);
holder.address = (TextView) convertView
.findViewById(R.id.item4);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// holder.item1.setText((String) data.get(position).get("item1"));
holder.id.setText(data.get(position + index * VIEW_COUNT).get(
"id").toString());
holder.name.setText((String) data
.get(position + index * VIEW_COUNT).get("name"));
holder.phone.setText((String) data.get(
position + index * VIEW_COUNT).get("phone"));
holder.address.setText((String) data.get(
position + index * VIEW_COUNT).get("address"));
return convertView;
}
}
public class ViewHolder {
public TextView id;
public TextView name;
public TextView phone;
public TextView address;
}
}
XML 文件 (main.xml, result_table_four.xml)
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:minWidth="270dip" android:background="@drawable/zbgimg">
<!-- ==============================table========================= -->
<TableLayout android:orientation="vertical"
android:layout_height="fill_parent" android:layout_width="wrap_content">
<!--
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_height="fill_parent"
android:layout_width="fill_parent">
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TableLayout android:orientation="vertical"
android:layout_height="wrap_content" android:layout_width="fill_parent">
<TableLayout android:id="@+id/layouthead"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:focusable="true" android:clickable="true"
android:focusableInTouchMode="true" android:keepScreenOn="true"
android:textColor="#FFF">
<TableRow>
<TextView android:id="@+id/title1" android:text="id"
android:layout_height="wrap_content" android:width="20dip"
android:textStyle="bold" android:textSize="16dip"
android:layout_width="wrap_content" android:editable="true"
android:gravity="center" android:background="@drawable/pading"
android:textColor="#FFF" />
<TextView android:id="@+id/title2" android:text="name"
android:layout_height="wrap_content" android:textStyle="bold"
android:width="100dip" android:gravity="center"
android:background="@drawable/pading" android:layout_width="wrap_content"
android:textSize="16dip" android:editable="true"
android:textColor="#FFF" />
<TextView android:id="@+id/title3" android:editable="true"
android:text="phone" android:gravity="center" android:background="@drawable/pading"
android:textSize="16dip" android:textStyle="bold" android:width="100dip"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:textColor="#FFF" />
<TextView android:id="@+id/title4" android:text="address"
android:layout_height="wrap_content" android:textColor="#FFF"
android:editable="true" android:gravity="center"
android:background="@drawable/pading" android:textSize="16dip"
android:textStyle="bold" android:width="115dip"
android:layout_width="wrap_content" />
</TableRow>
</TableLayout>
<View android:layout_width="fill_parent"
android:layout_height="1dip" android:background="?android:attr/listDivider" />
<TableLayout android:layout_width="wrap_content"
android:layout_height="350dip">
<!--
android:minHeight="300dip"
-->
<ListView android:id="@+id/listview" android:layout_height="fill_parent" style="@style/list_view_style" android:layout_width="fill_parent"></ListView>
</TableLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="horizontal"
android:gravity="center">
<Button android:id="@+id/but_up" android:text="page up"
android:layout_width="130dip" android:layout_height="wrap_content" />
<Button android:id="@+id/but_down" android:text="page down"
android:layout_width="130dip" android:layout_height="wrap_content" />
</LinearLayout>
</TableLayout>
</ScrollView>
</TableLayout>
</LinearLayout>
<?xml version="1.0" encoding="UTF-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:id="@+id/row">
<TableRow>
<TextView android:id="@+id/item1" android:layout_height="fill_parent"
android:gravity="center" android:background="@drawable/pading"
android:layout_width="wrap_content" android:width="20dip"
android:textColor="#FFF" android:focusable="false" android:textSize="16.1dip" />
<TextView android:id="@+id/item2"
android:focusable="false" android:layout_height="fill_parent"
android:width="100dip" android:layout_width="wrap_content"
android:textColor="#FFF" android:gravity="center" android:background="@drawable/pading"
android:textSize="16.1dip" />
<TextView android:id="@+id/item3"
android:focusable="false" android:textColor="#FFF"
android:layout_width="wrap_content" android:gravity="center"
android:background="@drawable/pading" android:layout_height="fill_parent"
android:width="100dip" android:textSize="16.1dip" />
<TextView android:id="@+id/item4" android:layout_height="fill_parent"
android:focusable="false" android:textColor="#FFF" android:width="115dip"
android:gravity="center" android:background="@drawable/pading"
android:layout_width="wrap_content" android:textSize="16.1dip" />
</TableRow>
</TableLayout>
效果圖: