我有一个片段对话框,其中包含设备上安装的所有应用的列表
有时加载需要一些时间,我希望在加载时显示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();
}
现在我正在考虑在异步任务中加载整个列表,但我无法确定异步任务应该做什么,它应该可能加载列表,但我怎么能等待列表并获取列表什么时候准备好了? (我相信应该使用类似回调的东西?)
由于
答案 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使用相同的适配器。