当listview需要加载的数据过多时,若一次性载入则速度会相当缓慢,影响用户体验,这时候就需要动态加载数据,即每次载入固定长度的数据,android market的listview就是采用这种方式,使得加载看起来很平滑,响应速度很快,有助于提高用户体验。
首先,要实现动态加载首先需要在获取数据时每次在上次获取到的数据之后的位置开始取得固定长度的数据,可通过"select * from TableName LIMIT m OFFSET n"语句实现,其中m是要取得数据的长度,n是数据的偏移量。
然后,在Activity中需要重写listview的onScroll方法,在onScroll中添加判断条件,当上一次加载的数据显示完并滑动到底部之后需要再次获取数据,可以在UI Thread中在开启一个线程去加载数据,加载数据时应弹出一个试图提示用户正在加载。
最后,加载数据的线程处理完毕后,刷新ListView。
以下是实现动态加载的主要步骤:
//加载数据的方法
privatevoidfillAdapter(intcount,intbegin) {
// TODO Auto-generated method stub
SQLiteOpenHelper mSQLiteOpenHelper = newSQLiteOpenHelper (
this);
Cursor c= mSQLiteOpenHelper .getDynamicListViewData(count, offset);
}
//监听listview的onScroll方法
OnScrollListener listScroll