【发布时间】:2011-11-21 01:13:22
【问题描述】:
我使用 TabActivity 和 4 个单独的 Activities - 每个标签一个。
其中一个Activities 是具有自定义ArrayAdapter 的ListView。
问题是,当我按 Tab 切换到此视图时,Activity 在视图更改之前加载内容,这似乎在几秒钟内没有任何反应,直到 xml 被加载并且解析等。
我已经找了一个例子,但这是我的第一个 Android 应用程序,我很难理解流程。
谁能给我一些代码,让我在后台线程加载内容时立即更改视图(我可以通知用户内容正在加载)
谢谢
编辑 - 我正在从现有的 iOS 应用程序移植代码 - 我无法更好地阐明问题,因为我没有意识到在这种情况下如何阻止 UI 线程,并且由于现有的代码和截止日期我不想过多地改变结构。
在看到您的代码 Jennifer 之前,我已经缩小了问题的范围,但这是我使用的解决方案,所以我会将您的解决方案标记为正确。
如果它对其他人有帮助,我会使用它,我必须将我调用的函数用于触发数据加载到后台线程,然后在该线程完成工作时显示内容
这个类是在 my 中声明的
public class TableView extends ListActivity
这对我来说很难理解,因为以前没有这样做过;)
public class GetContentTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog pdialog;
@Override
protected void onPreExecute(){
super.onPreExecute();
pdialog = new ProgressDialog(TableView.this);
pdialog.setTitle(progressDialogTitle);
pdialog.setMessage(progressDialogMessage);
pdialog.show();
}
@Override
protected void onPostExecute(Void result){
super.onPostExecute(result);
setUpAndLoadList(); // the function to display the list and fill it with content
pdialog.dismiss();
}
@Override
protected Void doInBackground(Void... params) {
doInitialLoad(); // The function to load any xml data from server
return null;
}
}
【问题讨论】:
-
“如何将它附加到 ArrayAdapter 和返回的内容”是什么意思
标签: android android-layout android-asynctask android-tabactivity