使用异步任务在Android中加载带有图像的应用列表视图

时间:2014-03-06 20:03:51

标签: android android-asynctask

我有一个片段对话框,其中包含设备上安装的所有应用的列表 有时加载需要一些时间,我希望在加载时显示ProgressDialog 我尝试过以下代码,这些代码没有任何好处:

@Override
public void onAttach(Activity activity) {
    // Show progress dialog
    showProgressDialog(activity);
    super.onAttach(activity);
}

private void showProgressDialog(Activity activity) {
    mProgressDialog = new ProgressDialog(activity);
    mProgressDialog.setTitle(R.string.loading);
    mProgressDialog.setMessage(getString(R.string.shared_options_wait_while_applist_loads));
    mProgressDialog.show();
}

onCreate加载整个列表和应用图片,然后我使用:

@Override
public void onStart() {
    stopProgressDialog();
    super.onStart();
}

    private void stopProgressDialog() {
        mProgressDialog.dismiss();
}

现在我正在考虑在异步任务中加载整个列表,但我无法确定异步任务应该做什么,它应该可能加载列表,但我怎么能等待列表并获取列表什么时候准备好了? (我相信应该使用类似回调的东西?)

由于

2 个答案:

答案 0 :(得分:0)

您可以通过添加DataSetObserver来查看适配器中的数据集更改。

@Override
public void onCreate(Bundle savedInstanceSate){
  super.onCreate(savedInstanceState);
  setContentview(R.layout.main_view);
  ListView myList = (ListView) findViewById(R.id.my_list);
  MyDataTypeAdapter adapter = new MyDataTypeAdapter();
  myList.setAdapter(adapter);
  adapter.registerDataSetObserver( new DataSetObserver(){
     @Override
     public void onChange(){
          //do stuff here
     }
  });
}

这样,当您的数据集发生变化时,将加载onChange,您可以在那里下载图像。

但是,我最好为适配器中的每一行执行AsyncTask并单独下载它的图像。您也可以使用UniversalImageLoader库来实现此目的。

答案 1 :(得分:0)

您可以尝试Android Bitmap Fun示例

Android图片演示:http://developer.android.com/training/displaying-bitmaps/index.html

使用GridView的这个示例,您可以通过更改listItem中的视图为ListView使用相同的适配器。