Android:从ListView中的XML处理程序加载大量数据

时间:2011-03-17 15:13:41

标签: android xml listview listadapter

我正在解析一个大型XML文档并在ListView中显示其内容。最初我正在解析整个事情,然后立即显示它,但这需要很长时间才能加载(在某些设备上约30秒)。

现在,只要我的SAX处理程序获取一个对象,我就将它添加到一个数组中,并通知我的列表适配器数据已更改。这会带来一个新问题,因为我正在快速刷新ListView,用户无法滚动或选择项目。

有没有更有效的方法来解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:1)

有两件事情浮现在脑海中。

  1. 确保您在后台线程中加载数据
  2. 不要压垮一次加载一个对象的UI。分10次或任何数量的批次为你做app。

答案 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();

        }

    }