ListView动态加载数据
当listview需要加载的数据过多时,若一次性载入则速度会相当缓慢,影响用户体验,这时候就需要动态加载数据,即每次载入固定长度的数据,android market的listview就是采用这种方式,使得加载看起来很平滑,响应速度很快,有助于提高用户体验。
首先,要实现动态加载首先需要在获取数据时每次在上次获取到的数据之后的位置开始取得固定长度的数据,可通过"select * from TableName LIMIT m OFFSET n"语句实现,其中m是要取得数据的长度,n是数据的偏移量。
然后,在Activity中需要重写listview的onScroll方法,在onScroll中添加判断条件,当上一次加载的数据显示完并滑动到底部之后需要再次获取数据,可以在UI Thread中在开启一个线程去加载数据,加载数据时应弹出一个试图提示用户正在加载。
最后,加载数据的线程处理完毕后,刷新ListView。
以下是实现动态加载的主要步骤:
//加载数据的方法
private void fillAdapter(int count, int begin) {
// TODO Auto-generated method stub
SQLiteOpenHelper mSQLiteOpenHelper = new SQLiteOpenHelper (
this);
Cursor c= mSQLiteOpenHelper .getDynamicListViewData(count, offset);
}
//监听listview的onScroll方法
OnScrollListener listScroll = new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if(isLoading) //正在加载时就不要让在执行活动触发事件
return;
if (firstVisibleItem + visibleItemCount == totalItemCount) {
// 开线程去获取数据
if (totalItemCount <= totalItemsCount) {
Integer[] params = new Integer[] { 25, currentItemCount };
mAsynchTask = new AsynchTask();
相关新闻>>
- 发表评论
-
- 最新评论 更多>>