Android ListView 滚动加载数据

1. 预览

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

 

2. 代码

 

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(); } } }

你可能感兴趣的:(thread,android,ListView,list,Class)