package zy.lucifer.ListViewScroll;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.LinearLayout.LayoutParams;
public class ListViewScroll extends Activity {
 /** Called when the activity is first created. */
 private LayoutParams mLayoutParams = new LinearLayout.LayoutParams(
   LinearLayout.LayoutParams.WRAP_CONTENT,
   LinearLayout.LayoutParams.WRAP_CONTENT);
 /**
  * 设置布局显示目标最大化属性
  */
 private LayoutParams FFlayoutParams = new LinearLayout.LayoutParams(
   LinearLayout.LayoutParams.FILL_PARENT,
   LinearLayout.LayoutParams.FILL_PARENT);
 ListView listView ;
 private int lastItem = 0;
 LinearLayout loadingLayout;
 private listViewAdapter adapter;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  listView = (ListView) findViewById(R.id.myList);
  
  Log.i("test", "onCreate(Bundle savedInstanceState)>>>>>>>>>>>>>>>");
  // 线性布局
  LinearLayout layout = new LinearLayout(this);
  // 设置布局 水平方向
  layout.setOrientation(LinearLayout.HORIZONTAL);
  // 进度条
  ProgressBar progressBar = new ProgressBar(this);
  // 进度条显示位置
  progressBar.setPadding(0, 0, 15, 0);
  // 把进度条加入到layout中
  layout.addView(progressBar, mLayoutParams);
  // 文本内容
  TextView textView = new TextView(this);
  textView.setText("加载中...");
  textView.setGravity(Gravity.CENTER_VERTICAL);
  // 把文本加入到layout中
  layout.addView(textView, FFlayoutParams);
  // 设置layout的重力方向,即对齐方式是
  layout.setGravity(Gravity.CENTER);
  // 设置ListView的页脚layout
  loadingLayout = new LinearLayout(this);
  loadingLayout.addView(layout, mLayoutParams);
  loadingLayout.setGravity(Gravity.CENTER);
  listView.addFooterView(loadingLayout);
  adapter = new listViewAdapter();
  listView.setAdapter(adapter);
  listView.setOnScrollListener(new OnScrollListener() {
 
   @Override
   public void onScroll(AbsListView view, int firstVisibleItem,
     int visibleItemCount, int totalItemCount) {
    // TODO Auto-generated method stub
    Log.i("test" , "Scroll>>>first: " + firstVisibleItem + ", visible: " + visibleItemCount + ", total: " + totalItemCount);
    lastItem = firstVisibleItem + visibleItemCount - 1;
    Log.i("test" , "Scroll>>>lastItem:" + lastItem);
    //显示50条ListItem,即0-49,因为onScroll是在“滑动”执行过之后才触发,所以用adapter.count<=41作条件
    int scrolllength=101;
    if (adapter.count<=scrolllength) {
     if (firstVisibleItem+visibleItemCount==totalItemCount) {
      adapter.count += 10;
      adapter.notifyDataSetChanged();
      listView.setSelection(lastItem);
      int currentPage=adapter.count/10;
      Toast.makeText(getApplicationContext(), "第"+currentPage+"页", Toast.LENGTH_LONG).show();
     }
    }
    else {
      listView.removeFooterView(loadingLayout);
    }
   }
   @Override
   public void onScrollStateChanged(AbsListView view, int scrollState) {
    // TODO Auto-generated method stub
   }
  });
 }
 class listViewAdapter extends BaseAdapter {
  int count = 10; /* starting amount */
  public int getCount() {
   return count;
  }
  public Object getItem(int pos) {
   return pos;
  }
  public long getItemId(int pos) {
   return pos;
  }
  public View getView(int pos, View v, ViewGroup p) {
   Log.i("test", "getView>>>pos:" + pos);
   TextView view;
   if (v == null) {
    view = new TextView(ListViewScroll.this);
   } else {
    view = (TextView) v;
   }
   view.setText("ListItem " + pos);
   view.setTextSize(20f);
   view.setGravity(Gravity.CENTER);
   view.setHeight(60);
   return view;
   
  }
 }
}
 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView android:cacheColorHint="#00000000" android:id="@+id/myList"
android:layout_width="fill_parent" android:layout_height="fill_parent"
  >
 </ListView>
</LinearLayout>