2015-02-04 51 views
0

我需要從活動更新TextView每2秒5次。我試過postDelayed()和其他的東西,我設法改變TextView每N秒,但我不知道如何限制重複次數。有什麼建議麼? 謝謝!如何從活動中每N秒更新一次Android TextView元素?

這裏是代碼,我現在:

的onCreate():

Timer timing = new Timer(); 
timing.schedule(new Updater(textView, textView2), 3000, 3000); 

更新():

private static class Updater extends TimerTask { 
     final Random rand = new Random(); 
     private final TextView textView1; 
     private final TextView textView2; 

     public Updater(TextView textView1, TextView textView2) { 
      this.textView1 = textView1; 
      this.textView2 = textView2; 
     } 


     @Override 
     public void run() { 
      textView1.post(new Runnable() { 

       public void run() { 
        textView1.setText(String.valueOf(rand.nextInt(50) + 1)); 
        textView2.setText(String.valueOf(rand.nextInt(50) + 1)); 
       } 
      }); 
     } 
    } 

回答

1

您還可以使用CountDownTimer是擠滿了Android的SDK:

你的情況TICK_TIME
new CountDownTimer(TOTAL_RUNNING_TIME_IN_MILLIS, TICK_TIME) 
    { 
     public void onTick(long millisUntilFinished) 
     { 
      mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
     } 

     public void onFinish() 
     { 
      mTextField.setText("done!"); 
     } 
    }.start(); 

所以應該是2 * 1000,TOTAL_RUNNING_TIME應該是5 * 2 * 1000希望有所幫助!

2
  1. 保留一個計數器在您的活動:int numberOfUpdates = 0;
  2. 創建一個遞歸方法來檢查cou NTER:

    public void updateTextView() 
    { 
        if(numberOfUpdates < 5) 
        { 
         numberOfUpdates++; 
         textview.postDelayed(new Runnable() { 
          @Override 
          public void run() 
          { 
           updateTextView(); 
          } 
         }, 3000); 
        } 
    } 
    
+0

我應該把櫃檯放在哪裏?據我所知,它可能不應該在onCreate()方法中,因爲該方法在屏幕上顯示任何內容之前執行。謝謝! – cornerstone

+0

你應該把這個int numberOfUpdates = 0;作爲類變量,以便您的方法updateTextView()可以訪問它。 – Quanturium

相關問題