1

ユーザーがボタンをクリックすると新しいアクティビティ レイアウトが開かれるアプリに取り組んでいます。この新しいレイアウトにはさまざまなビューが含まれています。

それらの1つは郵便番号ですEditText。この郵便番号がEditText自動的にユーザーの郵便番号を取得して入力するGPSようにしたいのですが、このために私は次のように働きたいです:

  1. ユーザーがボタンをクリックします。
  2. 新しいレイアウトが読み込まれます。
  3. すべてのビューが完全に読み込まれ、郵便番号の前にEditText読み込みボタンが表示され、GPS によって自動的に表示されます。

3 番目のポイント、つまり、ユーザーの郵便番号が取得されないまで読み込みを表示するにはどうすればよいですか。

4

1 に答える 1

0

例として、次のコードを検討してください。ただし、いくつかの空白を埋める必要があります。

これはProgressBar、アプリの の 1 つにa を表示する方法ですActivities。これには ListView があり、独自のコンテンツに置き換える必要があります。

    <LinearLayout
        android:id="@+id/linlaHeaderProgress"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:orientation="horizontal"
        android:visibility="gone" >

        <ProgressBar
            android:id="@+id/pbHeaderProgress"
            style="@style/Spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="2dp" >
        </ProgressBar>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="left|center"
            android:padding="2dp"
            android:text="Loading...."
            android:textSize="20sp" >
        </TextView>
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:cacheColorHint="@android:color/transparent"
        android:divider="#000000"
        android:dividerHeight="0dp"
        android:fadingEdge="none"
        android:persistentDrawingCache="scrolling"
        android:scrollbars="none" >
    </ListView>

次に、このレイアウトを にマップする Java コードでActivityLinearLayout linlaHeaderProgress. android:visibility="gone"XML 自体では、属性が に設定されていることに注意してください"gone"

AsyncTask を使用して郵便番号を取得する場合、 でプロセスが行われている間に、次のように の可視性を切り替えて をdoInBackground()表示します。ProgressBarlinlaHeaderProgressonPreExecute()

@Override
protected void onPreExecute() {

    // SHOW THE PROGRESS BAR (SPINNER) WHILE FETCHING POST DETAILS
    linlaHeaderProgress.setVisibility(View.VISIBLE);
}

で、onPostExecute()次のように可視性を再度切り替えます。

@Override
protected void onPostExecute(Void result) {

    // HIDE THE PROGRESS BAR (SPINNER) AFTER FETCHING THE POST DETAILS
    linlaHeaderProgress.setVisibility(View.GONE);
}

AsyncTask を使用しておらず、代わりに で処理を行っている場合Methodは、メソッドの開始時にこれを使用します: linlaHeaderProgress.setVisibility(View.VISIBLE);。EditText に郵便番号を表示したら、メソッドの最後でこれを使用します。linlaHeaderProgress.setVisibility(View.GONE);

グローバルに宣言するLinearLayout linlaHeaderProgressので、必要な場所で再利用できます。これが役に立ったかどうか、または他にご不明な点がありましたらお知らせください。

于 2013-03-15T09:41:56.247 に答える