在我的活动中,我从数据库加载列表的内容,并希望在加载时显示 ProgressDialog。
我自己都在工作,但是如果我在线程中加载数据(我应该这样做吗?),列表会在加载数据之前显示。但如果我使用加入,ProgressDialog 甚至不会出现。
我怎样才能结合这个?或者这对于线程来说根本不可能?(也许是 AsyncTask?)
这是供参考的代码:
final ProgressDialog progressD=ProgressDialog.show(ShopSwitchActivity.this, "", "Loading..", true);
Thread myThread = new Thread(new Runnable() {
@Override
public void run() {
try
{
getData();
}catch(Exception e){}
}
});
myThread.start();
try {
myThread.join();
} catch (InterruptedException e) {
}
progressD.dismiss();
编辑:使用 AsyncTask 更新代码:
public class LoadList extends AsyncTask<String, Void, Boolean> {
ProgressDialog dialog;
ShopSwitchActivity activity;
public LoadList(ShopSwitchActivity activity) {
this.activity = activity;
dialog = new ProgressDialog(activity);
}
protected void onPreExecute() {
this.dialog.setMessage("Loading...");
this.dialog.show();
}
@Override
protected void onPostExecute(final Boolean success) {
if (dialog.isShowing()) {
dialog.dismiss();
}
}
protected Boolean doInBackground(final String... args) {
try{
activity.getData();
} catch (Exception e) {
Log.e("error", e.getMessage());
}
return true;
}
}
编辑:我的解决方案 现在使用 AsyncTask 加载数据,完成后,我用新数据刷新列表。