`

Android ListView 滚动加载数据

 
阅读更多

1. 预览

2. 代码

  1. packageandroid.test;
  2. importjava.util.ArrayList;
  3. importandroid.app.Activity;
  4. importandroid.app.ProgressDialog;
  5. importandroid.os.Bundle;
  6. importandroid.os.Handler;
  7. importandroid.os.Message;
  8. importandroid.widget.AbsListView;
  9. importandroid.widget.ArrayAdapter;
  10. importandroid.widget.ListView;
  11. importandroid.widget.AbsListView.OnScrollListener;
  12. publicclassMainextendsActivityimplementsRunnable{
  13. privateListViewm_listView;
  14. privateArrayList<String>m_data=newArrayList<String>();
  15. privateArrayAdapter<String>m_adapter;
  16. privateProgressDialogm_progressDlg;
  17. privateintm_nLastItem=0;
  18. privateHandlerm_handler=newHandler(){
  19. @Override
  20. publicvoidhandleMessage(Messagemsg){
  21. m_progressDlg.dismiss();
  22. for(inti=m_listView.getCount();i<m_listView.getCount()+10;++i){
  23. m_data.add("test__"+i);
  24. }
  25. m_adapter.notifyDataSetChanged();
  26. m_listView.setSelection(m_nLastItem-1);
  27. }
  28. };
  29. /**Calledwhentheactivityisfirstcreated.*/
  30. @Override
  31. publicvoidonCreate(BundlesavedInstanceState){
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.main);
  34. m_listView=(ListView)findViewById(R.id.listView1);
  35. for(inti=0;i<10;++i){
  36. m_data.add("test__"+i);
  37. }
  38. m_adapter=newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,m_data);
  39. m_listView.setAdapter(m_adapter);
  40. m_listView.setOnScrollListener(newOnScrollListener(){
  41. @Override
  42. publicvoidonScroll(AbsListViewview,intfirstVisibleItem,intvisibleItemCount,inttotalItemCount){
  43. m_nLastItem=firstVisibleItem+visibleItemCount;
  44. }
  45. @Override
  46. publicvoidonScrollStateChanged(AbsListViewview,intscrollState){
  47. if(m_nLastItem==m_adapter.getCount()&&scrollState==OnScrollListener.SCROLL_STATE_IDLE){
  48. LoadRemainingItems();
  49. }
  50. }
  51. });
  52. }
  53. privatevoidLoadRemainingItems(){
  54. m_progressDlg=ProgressDialog.show(Main.this,"信息","正在加载数据...",true);
  55. Threadt=newThread(Main.this);
  56. t.start();
  57. }
  58. @Override
  59. publicvoidrun(){
  60. try{
  61. Thread.sleep(3000);
  62. m_handler.sendEmptyMessage(0);
  63. }catch(InterruptedExceptione){
  64. e.printStackTrace();
  65. }
  66. }
  67. }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics