package com.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
public class Activity01 extends ListActivity {
private LinearLayout mLoadLayout;
private ListView mListView;
private final LayoutParams mProgressBarLayoutParams = new
LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
private final LayoutParams mTipContentLayoutParams = new
LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
private ListViewAdapter mListViewAdapter;
private boolean mGetMore = false;
private static int ALLCOUNT = 41;
private Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mListViewAdapter = new ListViewAdapter();
/*
* 加载项布局,此布局被添加到ListVIew的Footer中
*/
mLoadLayout = new LinearLayout(this);
mLoadLayout.setMinimumHeight(60);
mLoadLayout.setGravity(Gravity.CENTER);
mLoadLayout.setOrientation(LinearLayout.HORIZONTAL);
/*
* 向加载项中加载一个圆形进度条
*/
ProgressBar mProgressBar = new ProgressBar(this);
mProgressBar.setPadding(0, 0, 15, 0);
mLoadLayout.addView(mProgressBar, mProgressBarLayoutParams);
/*
* 向加载项中添加提示信息
*/
TextView mTipContent = new TextView(this);
mTipContent.setText("Loading...");
mLoadLayout.addView(mTipContent, mTipContentLayoutParams);
/*
* 获取ListView组件,并将加载项加入到组件中的Footer中
*/
mListView = getListView();
mListView.addFooterView(mLoadLayout);
/*
* 设置list组件的adapter,并设置滑动监听事件
*/
mListView.setAdapter(mListViewAdapter);
mListView.setOnScrollListener(new onScroolListener());
mHandler = new Handler()
{
public void handleMessage(Message msg)
{
switch(msg.what){
case 0:
if(mListViewAdapter.count <= ALLCOUNT){
mListViewAdapter.count += 10;
}
else{
mListView.removeFooterView(mLoadLayout);
}
mListViewAdapter.notifyDataSetChanged();
break;
}
}
};
}
class ListViewAdapter extends BaseAdapter{
int count = 10;
public int getCount() {
return count;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
TextView mTextView;
if(convertView == null){
mTextView = new TextView(Activity01.this);
}
else{
mTextView = (TextView)convertView;
}
mTextView.setText("Item "+position);
mTextView.setTextSize(20f);
mTextView.setHeight(60);
return mTextView;
}
}
class onScroolListener implements OnScrollListener{
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
mGetMore = false;
if(firstVisibleItem+visibleItemCount==totalItemCount){
mGetMore = true;
}
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(mGetMore && scrollState == OnScrollListener.SCROLL_STATE_IDLE)
mHandler.sendEmptyMessageDelayed(0, 1000);
}
}
}