@Override
public void onClick(View view) {
data = null;
data = new ArrayList<String>();
adapter = null;
//显示ProgressDialog放到AsyncTask.onPreExecute()里
//showDialog(PROGRESS_DIALOG);
new ProgressTask().execute(data);
}
});
private class ProgressTask extends AsyncTask<ArrayList<String>, Void, Integer> {
/* 该方法将在执行实际的后台操作前被UI thread调用。可以在该方法中做一些准备工作,如在界面上显示一个进度条。*/
@Override
protected void onPreExecute() {
// 先显示ProgressDialog
showDialog(PROGRESS_DIALOG);
}
/* 执行那些很耗时的后台计算工作。可以调用publishProgress方法来更新实时的任务进度。 */
@Override
protected Integer doInBackground(ArrayList<String>... datas) {
ArrayList<String> data = datas[0];
for (int i=0; i<8; i++) {
data.add("ListItem");
}
return STATE_FINISH;
}
/* 在doInBackground 执行完成后,onPostExecute 方法将被UI thread调用,
* 后台的计算结果将通过该方法传递到UI thread.
*/
@Override
protected void onPostExecute(Integer result) {
int state = result.intValue();
switch(state){
case STATE_FINISH:
dismissDialog(PROGRESS_DIALOG);
Toast.makeText(getApplicationContext(),
"加载完成!",
Toast.LENGTH_LONG)
.show();
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1,
data );
setListAdapter(adapter);
break;
case STATE_ERROR:
dismissDialog(PROGRESS_DIALOG);
Toast.makeText(getApplicationContext(),
"处理过程发生错误!",
Toast.LENGTH_LONG)
.show();
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1,
data );
setListAdapter(adapter);
break;
default:
}
}
















