预览
2. 代码
view plaincopy to clipboardprint?
01.package android.test;
02.import java.util.ArrayList;
03.import android.app.Activity;
04.import android.app.ProgressDialog;
05.import android.os.Bundle;
06.import android.os.Handler;
07.import android.os.Message;
08.import android.widget.AbsListView;
09.import android.widget.ArrayAdapter;
10.import android.widget.ListView;
11.import android.widget.AbsListView.OnScrollListener;
12.public class Main extends Activity implements Runnable {
13. private ListView m_listView;
14. private ArrayList<String> m_data = new ArrayList<String>();
15. private ArrayAdapter<String> m_adapter;
16. private ProgressDialog m_progressDlg;
17.
18. private int m_nLastItem = 0;
19. private Handler m_handler = new Handler() {
20. @Override
21. public void handleMessage(Message msg) {
22. m_progressDlg.dismiss();
23. for (int i = m_listView.getCount(); i < m_listView.getCount() + 10; ++i) {
24. m_data.add("test__" + i);
25. }
26. m_adapter.notifyDataSetChanged();
27. m_listView.setSelection(m_nLastItem - 1);
28. }
29. };
30. /** Called when the activity is first created. */
31. @Override
32. public void onCreate(Bundle savedInstanceState) {
33. super.onCreate(savedInstanceState);
34. setContentView(R.layout.main);
35. m_listView = (ListView) findViewById(R.id.listView1);
36. for (int i = 0; i < 10; ++i) {
37. m_data.add("test__" + i);
38. }
39. m_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, m_data);
40. m_listView.setAdapter(m_adapter);
41. m_listView.setOnScrollListener(new OnScrollListener() {
42. @Override
43. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
44. m_nLastItem = firstVisibleItem + visibleItemCount;
45. }
46. @Override
47. public void onScrollStateChanged(AbsListView view, int scrollState) {
48. if (m_nLastItem == m_adapter.getCount() && scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
49. LoadRemainingItems();
50. }
51. }
52. });
53. }
54. private void LoadRemainingItems() {
55. m_progressDlg = ProgressDialog.show(Main.this, "信息", "正在加载数据...", true);
56. Thread t = new Thread(Main.this);
57. t.start();
58. }
59. @Override
60. public void run() {
61. try {
62. Thread.sleep(3000);
63. m_handler.sendEmptyMessage(0);
64. } catch (InterruptedException e) {
65. e.printStackTrace();
66. }
67. }
68.}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ilysony/archive/2011/03/18/6259828.aspx