我有MainActivity,它扩展了SherlockListActivity。这是onCreate方法:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new MyXMLDownloader().execute(this);
}
MyXMLDownloader只是AsyncTask类,我用它从http下载XML文件。在onPostExecute方法中,我正在调用makeMainGUI(),它根据该XML文件创建GUI(我的意思是它填充了我的ListView)。
这是main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@+android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
我想添加ProgressBar小部件(和一些文本)。它应该在下载XML之前显示,并且它应该在ListView填充后消失(当然它是在下载XML之后发生的)。我怎样才能做到这一点?
我有问题,因为我必须在main.xml中有ListView,因为我的MainActivity类扩展了SherlockListActivity。
编辑:
我设法做了这样的事情:
<ProgressBar
android:id="@android:id/empty"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
我将ProgressBar添加到带有“空”id的main.xml。只要ListView为空,就会显示,这是正确的。但我不知道如何在这里放置TextView,因为只有一个项目可以有一个“空”ID。
EDIT2: 我认为我设法做到了这一点。在main.xml中我添加了以下内容:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@android:id/empty">
<ProgressBar
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/progressBar1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Please wait"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/waitingTextView"/>
</LinearLayout>
这是我需要的东西。谢谢!
答案 0 :(得分:0)
在AsyncTask类中,使用onPrexecute方法显示进度对话框并使用onPostExecute来关闭它:
@Override
protected void onPreExecute()
{
super.onPreExecute();
pDialog = new ProgressDialog(YOUR_ACTIVITY_CLASS_NAME.this);
pDialog.setMessage("Please Wait");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected void onPostExecute(String str)
{
// Dismiss the dialog once finished
pDialog.dismiss();
}
在调用之前不要忘记定义pDialog:
ProgresDialog pDialog;