Android ListView 滚动加载数据

1. 预览

Android ListView 滚动加载数据_第1张图片

 

2. 代码

 

view plain
  1. package android.test;  
  2. import java.util.ArrayList;  
  3. import android.app.Activity;  
  4. import android.app.ProgressDialog;  
  5. import android.os.Bundle;  
  6. import android.os.Handler;  
  7. import android.os.Message;  
  8. import android.widget.AbsListView;  
  9. 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.     }  


你可能感兴趣的:(Android ListView 滚动加载数据)