2

膨張したレイアウトにデータをロードするのに時間がかかる検索機能 (Web サービスを使用) があります。ProgressBarデータが Web サービスからフェッチされるまで表示したい。これは短い時間間隔なので、これには a を使用しませんProgressDialog。多くの投稿と開発ガイドを調べましたが、アプリでそれを使用する方法がわかりません。レイアウトに がありSpinnerます。スピナー ドロップダウンから項目を選択したら、その文字列を検索機能に渡します。検索機能はデータをフェッチするだけでなく、膨張したレイアウトにデータを読み込みます。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        Selection = spinner.getSelectedItem().toString();           

        search(Selection);
    }

開発者ガイドで説明されているように、 ProgressBar、ハンドラーを作成しました。

private ProgressBar mProgress =  new ProgressBar(SearchActivity.this, null, android.R.attr.progressBarStyleSmall);
private int mProgressStatus = 0;

private Handler mHandler = new Handler();

そして、これが表示に使用される新しいスレッドだとしますProgressBar

new Thread(new Runnable() {
         public void run() {
             while (mProgressStatus < 100) {
                 mProgressStatus = doWork();

                 // Update the progress bar
                 mHandler.post(new Runnable() {
                     public void run() {
                         mProgress.setProgress(mProgressStatus);
                     }
                 });
             }
         }
     }).start();

検索機能の進行状況を追跡して を表示するにはどうすればよいProgressBarですか?

読んでくれてありがとう

4

2 に答える 2

2

スレッドの代わりにAsyncTaskを使用する必要があります。asyncTask を使用すると、UI スレッドで実行される と 、およびpreexecuteバックpostexecuteグラウンドで実行される を使用できます。グーグルにはたくさんのツッツがあります。publishprogressdoInBackground

これを試してみてください

于 2012-07-24T20:44:01.267 に答える
1

AsyncTaskスレッドの代わりに を使用します。使いやすく、進行状況の更新を通知する組み込みのメカニズムを提供します。

完全なサンプルについては、この質問を見てください。

Android でファイルをダウンロードし、ProgressDialog で進行状況を表示する

于 2012-07-24T20:44:27.753 に答える