我正在解析一个大型XML文档并在ListView中显示其内容。最初我正在解析整个事情,然后立即显示它,但这需要很长时间才能加载(在某些设备上约30秒)。
现在,只要我的SAX处理程序获取一个对象,我就将它添加到一个数组中,并通知我的列表适配器数据已更改。这会带来一个新问题,因为我正在快速刷新ListView,用户无法滚动或选择项目。
有没有更有效的方法来解决这个问题?
感谢。
答案 0 :(得分:1)
有两件事情浮现在脑海中。
答案 1 :(得分:0)
我建议您在扩展AsyncTask
的类中使用progressdialog。
类MyAsyncLoad扩展了AsyncTask {
ProgressDialog myprogsdial;
@Override
protected void onPreExecute(){
myprogsdial = ProgressDialog.show(MyActivity.this, null, "Loading...", true);
}
@Override
protected Void doInBackground(Void... params) {
//here you are doing parsing stuff and load data into your datastructure, or whatever you use to store data from XML
return null;
}
@Override
protected void onPostExecute(Void result){
myprogsdial.dismiss();
//here you update the cursor,something like
adapter = new CursorAdapter(context, cursor...)
setListAdapter(adapter);
adapter.notifyDataSetChanged();
}
}