-1

SherlockListActivity を拡張する MainActivity があります。onCreate メソッドは次のとおりです。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    new MyXMLDownloader().execute(this);
}

MyXMLDownloader は単なる AsyncTask クラスであり、http から XML ファイルをダウンロードするために使用します。onPostExecute メソッドで、その XML ファイルに基づいて GUI を作成する makeMainGUI() を呼び出しています (つまり、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 のダウンロード後に表示されます)。どうすればそれを達成できますか?

MainActivity クラスが SherlockListActivity を拡張するため、main.xml に ListView が必要なので、これに問題があります。

編集:

私はこのようなことをすることができました:

<ProgressBar
        android:id="@android:id/empty"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />

「空の」IDでProgressBarをmain.xmlに追加しました。ListView が空である限り表示されますが、これは正しいことです。しかし、「空の」IDを持つことができるアイテムは1つだけなので、ここにもTextViewを配置する方法がわかりません。

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>

そして、それは私が必要としていたものです。ありがとうございました!

4

1 に答える 1

0

AsyncTask クラスでは、onPreexecute メソッドを使用して進行状況ダイアログを表示し、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;
于 2012-12-27T20:48:57.470 に答える