如何动态(定期)更新TextView?

时间:2015-02-18 02:52:28

标签: android android-layout textview

我正在使用可滚动的TextView开发一个简单的android活动。我在TextView中显示1-100的数字,但是有时间延迟。然而,我想要的输出并不是我得到的。

当前输出: 1替换为2替换为3 ....直到100 期望输出:
                1
                2
                3
                4
                。
                。
               100

这是我的活动代码:

    public class MainActivity extends ActionBarActivity {

        private static int i = 0;
        TextView textView;
        Handler handler;
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main_page);

            textView = (TextView) findViewById(R.id.text_area);
            new PrimeCalculation().execute();

            handler = new Handler();
            handler.post(updateView);
       }
       private Runnable updateView = new Runnable() {

            @Override
            public void run() {
                if(i <= 100) {
                    textView.setText(Integer.toString(i));
                    i++;
                    handler.postDelayed(this, 1000);
                }
            }
        }; 
    }

4 个答案:

答案 0 :(得分:3)

这个怎么样:

textView.setText(textView.getText() + "\n" + i);

答案 1 :(得分:1)

创建一个新的String Array。将文本视图设置为array.toString();每次计时器用完时,将最新的数字插入数组并重复。最新的数字应该是一个在计时器用完时增加的int。希望这有帮助!

答案 2 :(得分:0)

试试这个

private Handler mHandler = new Handler();
private int nCounter = 0;

View.OnClickListener mButtonStartListener = new OnClickListener() {
    public void onClick(View v) {
        try {
            mHandler.removeCallbacks(hMyTimeTask);
         //        Parameters
         //        r  The Runnable that will be executed. 
         //        delayMillis  The delay (in milliseconds) until the Runnable will be executed. 
                       mHandler.postDelayed(hMyTimeTask, 1000); // delay 1 second
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
};


private Runnable hMyTimeTask = new Runnable() {
           nCounter++;
               hTextView.append("\n"+nCounter); 
       }
       public void run() {
    }; 

希望这会对你有所帮助

答案 3 :(得分:0)

您可以使用以下代码......

public class MainActivity extends ActionBarActivity {

private static int i = 0;
TextView textView;
Handler handler;
String textViewText="";

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView) findViewById(R.id.text_area);

    handler = new Handler();
    handler.post(updateView);
}
private Runnable updateView = new Runnable() {

    @Override
    public void run() {
        if(i <= 100) {

//                 textViewText = textViewText + Integer.toString(I)+&#34; &#34 ;;

            textView.setText(textViewText);

// textViewText = textViewText + textView.getText()。toString();

            i++;
            handler.postDelayed(this, 1000);
        }
    }
};}

我希望它能帮助你......