Search code examples
androiddatetimetextviewclock

Update TextView Every Second


I've looked around and nothing seems to be working from what I've tried so far...

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.deskclock);

    TextView tvTime = (TextView) findViewById(R.id.tvTime);
    TextView tvDate = (TextView) findViewById(R.id.tvDate);

    java.util.Date noteTS = Calendar.getInstance().getTime();

    String time = "hh:mm"; // 12:00
    tvTime.setText(DateFormat.format(time, noteTS));

    String date = "dd MMMMM yyyy"; // 01 January 2013
    tvDate.setText(DateFormat.format(date, noteTS));

I basically want the setText methods to update or refresh every second or so, so my clock actually works like it should do. I've seen methods like handlers and run and nothing worked so any help with this would be great thanks. :)


Solution

  • Add following code in your onCreate() method:

    Thread thread = new Thread() {
    
      @Override
      public void run() {
        try {
          while (!thread.isInterrupted()) {
            Thread.sleep(1000);
            runOnUiThread(new Runnable() {
              @Override
              public void run() {
                // update TextView here!
              }
            });
          }
        } catch (InterruptedException e) {
        }
      }
    };
    
    thread.start();
    

    This code starts an thread which sleeps 1000 milliseconds every round.