在TextView中动态显示值 - Android

时间:2013-11-29 20:11:25

标签: android dynamic textview

我有一个带有一个按钮的简单程序。一旦我点击按钮循环开始,应该动态显示TextView中的当前值。但这会显示循环完成时的值。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 
    tv=(TextView) findViewById(R.id.textView2);
}

public  void btnClick(View v) throws Exception {

    for (int i=0;i<10;i++){
    tv.setText("Value of I "+i);
    Thread.sleep(500);
    }
}

我的预期输出是动态显示0,1,....的值,但最后显示为9。如果我使用append,我必须等到循环终止。请帮帮我。

3 个答案:

答案 0 :(得分:2)

试试这个:

int i = 0; //declare this globally
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        if(i != 10) { 
                text.append(" " + i);
                i++;
                handler.postDelayed(this, 1000);
            }
        }
    }, 1000);
}

确保全局声明int i = 0

答案 1 :(得分:0)

tv.append("text here")是你的答案。

答案 2 :(得分:0)

不要在你的主UI线程中使用Thread.sleep()这应该给出异常,而不是像这样使用新的线程

Thread myThread = new Thread(new Runnable() {

        @Override
        public void run() {
            for (int i=0;i<10;i++){
                          tv.setText("Value of I "+i);
                          Thread.sleep(500);
                         }
        }
    });
myThread.start();

或者如果您进行更复杂的操作,则必须使用AsyncTask calss