关于异步ListView数据加载有关问题

关于异步ListView数据加载问题
楼主写了一个读取机子所有视频的ListView
由于读取需要一定的时间,所以我就用了异步加载的办法
下面是我的代码,并没有达到异步加载的目的,启动后还是要等几秒钟才全部显示出来

我想实现边显示,边加载的效果,应该怎么改?
package com.siyehuazhilian.myvideoviewplayer;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {
// 加载数据模式
private static final int UPDATA = 1;
// 声明控件对象
private ListView videoListView = null;
// 数据集合
private ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
// 适配器
private SimpleAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoListView = (ListView) findViewById(R.id.listview_videolist);

adapter = new SimpleAdapter(this, list, R.layout.list_item,
new String[] { "title" }, new int[] { R.id.textview_item });

videoListView.setAdapter(adapter);

videoListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

}
});

}

@Override
protected void onResume() {
super.onResume();
new Thread() {
public void run() {
loadData();
};
}.start();
}

private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == UPDATA) {
adapter.notifyDataSetChanged();
}
};
};

/**
 * 加载数据
 * 
 */
private void loadData() {
Cursor cursor = getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, null,
null);

while (cursor.moveToNext()) {
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("title", cursor.getString(cursor
.getColumnIndex(MediaStore.Video.Media.TITLE)));
hashMap.put("paht", cursor.getString(cursor
.getColumnIndex(MediaStore.Video.Media.DATA)));
list.add(hashMap);
handler.sendEmptyMessage(UPDATA);
}

cursor.close();
}

}

------解决方案--------------------
分页显示 ,一页只显示15条,应该不会延时了。
你一次性从数据库读取 是比较慢的。
你可以先读取前15条,后台偷偷再后台异步读取更多的数据存放到列表里面,然后分页
------解决方案--------------------
我现在也做这块,具体显示几条要开机子了,有的机子性能高,可以显示20,有的低可以显示10条,经过多台机子测试,12条最保险,然后判断用户拉到最上方或者拉到最下方刷新listview的时候再在多显示,如果纯粹异步加载,还是有延迟,机子不能再oncreate的时候加载完成,顺便说下oncreate一般执行为5~7ms,如果数据一多绝对超过加载时间,,,