Android ListView 滚动加载数据

来源:互联网 发布:java程序设计 pdf 编辑:程序博客网 时间:2024/05/17 03:01
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() {@Overridepublic 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. */@Overridepublic 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() {@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {m_nLastItem = firstVisibleItem + visibleItemCount;}@Overridepublic 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();}@Overridepublic void run() {try {Thread.sleep(3000);m_handler.sendEmptyMessage(0);} catch (InterruptedException e) {e.printStackTrace();}}}