2012-01-19 6 views
1

私は以前のクラスで保存された配列エントリを要約するAndroidプロジェクトのJavaクラスを作成しています。各エントリ自体は複数の要素を持つ配列です。ループ内でのメソッドの使用、JavaおよびAndroid

私はエントリを前後に移動するメソッドを作成しましたが、100以上のエントリがある場合は、「次へ」ボタンを何度も繰り返し押すのではなく、 。 これを行う方法はありますか?

私は、ループには最後のエントリしか表示されませんが、私が思うことができる最良の例は以下のとおりです。

for (int i = Selection; i<=Qty; i++){ 

Num.setText(Integer.toString(i)); 
    loadNext(); 

    try{ 
     Thread.sleep(1500); 
    }catch(InterruptedException e){} 

    if (Brk=true){ 
     break; 
    } 
} 
+0

Androidについてはわかりませんが、Swingには専用のUIスレッドがあります。 Android上で似ている場合は、ループを実行する別のスレッドを生成する必要があります。そうしないと、UIアップデートがブロックされる可能性があります。 – Thomas

答えて

1

ただし、sleepメソッドを呼び出すたびにUIがフリーズします。一般的に、あなたはUIのものを扱っているときは、Threadクラスを使用しないでください。代わりに、Handlerクラスを使用します。多くのドキュメントがありますが、徹底的に検索した後、私に知らせるだけの良い例は見つけられません。

1

あなたのブレーク条件は間違っているようで、最初の繰り返しのループブレークが発生します。

if (Brk=true){ 
     break; 
    } 

Brk=trueはassigment例外ではなく、comparation例外です。それは常に真実を返します。変数の値がtrueであるかどうかを調べるには、expが必要です。あなたが比較する必要があるが、ちょうどif文でそれを参照することはできませんので、しかし、再び、それは、ブール変数である:

if (Brk){ 
     break; 
    } 
2

あなたの元の答えに近いだろう解決策が背景を作成することですスレッドをループし、各項目をActivity.runOnUiThread()の中にロードします。 AsyncTaskと同様のことを行い、進行状況を更新することもできます。これらの両方の詳細については、こちらの記事を参照してください - ちょうどタイマーを持ち、かつたびにタイマーが実行をお使いのループ変数をインクリメント

http://developer.android.com/resources/articles/painless-threading.html

しかし、よりよい解決策は、すべてのループを持っていないことです。

関連する問題