【问题标题】:Android: Loading lots of data from an XML handler in a ListViewAndroid:从 ListView 中的 XML 处理程序加载大量数据
【发布时间】:2011-03-17 15:13:40
【问题描述】:

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

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

有没有更有效的方法来处理这个问题?

谢谢。

【问题讨论】:

    标签: android xml listview listadapter


    【解决方案1】:

    我想到了两件事。

    1. 确保在后台线程中加载数据
    2. 不要让一次加载一个对象的 UI 不堪重负。以 10 个或任何对您的应用有意义的数量为一组进行。

    【讨论】:

    • 一切都在后台线程中,但我一次加载每个 UI 对象。我会尝试批处理它,谢谢!
    【解决方案2】:

    我建议您在扩展 AsyncTask 的类中使用进度对话框。

    类 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();
    
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 2011-11-20
      • 1970-01-01
      • 2012-08-06
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多