2011-08-04 9 views
0

私のプログラムには、クリックすると巨大なデータベースにアクセスするボタンがあり、それを行うのに2〜2回かかってから消えます。その待ち時間の間に、ボタンのテキストを「LOADING ...」または何かに変更したいと思います。私は残りのコードの前に1行のコードを実行する方法は?ボタンのテキストを変更する

myButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     myButton.setText("LOADING..."); 
     //then do other stuff 
    } 

を試してみましたが、コードの進路線のような順番に実行されていないので、テキストは表示さ(または、それが顕著でないことを消える前に、こんなに早く現れる)しません。これを行う簡単な方法はありますか?心に浮かんでいるのは、タイマーを使うことだけですが、(1)そのようなコードの単純な行では、(2)どのように過度に複雑に思えるのか分かりません。

+0

これは多くが重複しています:Check AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html –

答えて

0

Dbクエリが完了したときにハンドラを使用して通知し、適切にテキストを変更することができます。ハンドラを使用する場合、私はこれを参照しましたtutorial

0

実際にテキストが変更されているだけで、まだレンダリングされていません。invalidate()ボタンも試してください。また、ボタンをクリックした後に長いプロセスを削除するだけでテストすることもできます。また、長いプロセスがある場合は、メインスレッドにはないことを確認してください。ProgressDialog

2

データベースへのアクセスにはAsyncTaskを使用する必要があります。 runInBackground()では、 "読み込み中"を表示するようにボタンを設定する必要があります。あなたはこれを参照することができます - http://developer.android.com/reference/android/os/AsyncTask.html

http://www.vogella.de/articles/AndroidPerformance/article.html#concurrency_asynchtaskもあなたがしようとしているものをあなたを助けるために本当に良いチュートリアルです。

+0

「ビューを作成した元のスレッドのみがそのビューに触れることができます」というエラーが表示されます。 – Kalina

+0

いくつかのコードを投稿できますか? – Suchi

0

Dbが読み込みを開始するときに読み込みを設定し、読み込みが終了すると読み込みを終了するように設定します。

関連する問題