ich mit Guglielmo Moretti zustimmen, aber wenn Sie es noch mit Textview auf eigene Faust tun wollen, als Umsetzung des klassischen Observer-Entwurfsmuster verwenden.
Sie können Ihre benutzerdefinierten Textview wie dem folgenden Code haben,
package com.example.stackoverflow;
import java.util.Observable;
import java.util.Observer;
import android.content.Context;
import android.widget.TextView;
public class MyTextView extends TextView implements Observer{
public MyTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
public void update(Observable observable, Object data) {
// TODO Auto-generated method stub
this.setText(""+((Integer)data).intValue());
}
}
Auch implementieren Modus mit observalble wie diese,
package com.example.stackoverflow;
import java.util.Observable;
public class MyTextViewModel extends Observable {
private int counter;
public MyTextViewModel(int initnumber){
this.counter = initnumber;
}
public void decrementCounter(){
if(this.counter>0){
this.counter--;
setChanged();
notifyObservers(this.counter);
}
}
}
Test-Aktivität wie diese,
package com.example.stackoverflow;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv;
LinearLayout ll;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// tv = (TextView) findViewById(R.id.textView1);
ll = (LinearLayout)findViewById(R.id.ll1);
MyTextView mtv = new MyTextView(getApplicationContext());
MyTextViewModel mm = new MyTextViewModel(10);
mm.addObserver(mtv);
mtv.setText("Not yet init");
ll.addView(mtv);
mm.decrementCounter(); // call this function in a thread and as many times as you want
}
}
Ja, verwenden Sie CountDownTimer. +1 – VendettaDroid
Vielen Dank !!! –