2017-07-07 6 views
1

このコードでは、ループを介してデータを表示するのではなく、それぞれのループデータを個別に表示する方法を説明します(タイマーを使用しようとしましたが、仕事はしません)。各ループ内のデータを更新するにはどうすればいいですか?

int noStart = 20; 
int minus = 5; 
private void waitUntil(long time) { 
    try { 
     Thread.sleep(time); 
    } 
    catch (InterruptedException e) { 
     //This is just here to handle an error without crashing 
    } 
} 
public void number(View view){ 
     for(int loop = 0;noStart<loop;loop+=5){ 
      noStart -= minus; 
      TextView tx = (TextView) findViewById(R.id.number); 
      tx.setText(String.valueOf(noStart)); 
      waitUntil(500); 
     } 
    } 

答えて

0

とTXのTextViewのテキストを設定し、また、遅延間隔内に設定しますミリ秒。

以下のコードは、UIスレッドをブロックせずに0.5秒ごとに5回実行されます。

final Handler h = new Handler(); 

h.postDelayed(new Runnable() { 

    private int counter = 0; 

    public void run() { 

     // Update your text view here 
     ... 

     if (++counter < 5) { 
      h.postDelayed(this, 500); 
     } 
    } 
}, 500); 
0

このタスクにはハンドラを使用できます。このようにして、メインのUIはスリープ状態になりません。

Handler waitHandler = new Handler(); 
TextView tx = (TextView) findViewById(R.id.number); 
waitHandler.post(waitRunnable); 

int counter = 0; 
static Runnable waitRunnable = new Runnable() { 
    @Override 
    public void run() { 
     for(int i=0; i<5; i++) { 
      tx.post(new Runnable() { 
       public void run() { 
        tx.setText(String.valueOf(counter)); 
       } 
      }); 
     } 
     counter+=5; 
     Thread.sleep(2000); 
    } 
}; 

これは、上述したように、あなたがHandlerを使用することができ、2秒5,10,15,20-有するギャップ及び25

+0

ハンドラーについて教えてくれてありがとう –

関連する問題