package android.test;
import java.util.ArrayList;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AbsListView.OnScrollListener;
public class Main extends Activity implements Runnable {
private ListView m_listView;
private ArrayList<String> m_data = new ArrayList<String>();
private ArrayAdapter<String> m_adapter;
private ProgressDialog m_progressDlg;
private int m_nLastItem = 0;
private Handler m_handler = new Handler() {
@Override
public void handleMessage(Message msg) {
m_progressDlg.dismiss();
for (int i = m_listView.getCount(); i < m_listView.getCount() + 10; ++i) {
m_data.add("test__" + i);
}
m_adapter.notifyDataSetChanged();
m_listView.setSelection(m_nLastItem - 1);
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
m_listView = (ListView) findViewById(R.id.listView1);
for (int i = 0; i < 10; ++i) {
m_data.add("test__" + i);
}
m_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, m_data);
m_listView.setAdapter(m_adapter);
m_listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
m_nLastItem = firstVisibleItem + visibleItemCount;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (m_nLastItem == m_adapter.getCount() && scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
LoadRemainingItems();
}
}
});
}
private void LoadRemainingItems() {
m_progressDlg = ProgressDialog.show(Main.this, "信息", "正在加载数据...", true);
Thread t = new Thread(Main.this);
t.start();
}
@Override
public void run() {
try {
Thread.sleep(3000);
m_handler.sendEmptyMessage(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}