Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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. :)

like image 315
Timmo Avatar asked Feb 11 '13 15:02

Timmo


2 Answers

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.

like image 95
endian Avatar answered Sep 30 '22 18:09

endian


It's a very old question and I'm sure there are a lot of resources out there. But it's never too much to spread the word to be at the safe side. Currently, if someone else ever want to achieve what the OP asked, you can use: android.widget.TextClock.

TextClock documentation here.

Here's what I've used:

<android.widget.TextClock     android:id="@+id/digitalClock"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:timeZone="GMT+0000" <!--Greenwich -->     android:format24Hour="dd MMM yyyy   k:mm:ss"     android:format12Hour="@null"     android:textStyle="bold"     android:layout_alignParentEnd="true" /> 
like image 35
AuroMetal Avatar answered Sep 30 '22 19:09

AuroMetal