按下按钮后延迟更新TextView

时间:2012-04-23 18:49:57

标签: android textview delay runnable

我试图在按下按钮后每隔五秒钟更新一次TextView,但是当运行应用程序时,TextView将只显示正在运行的循环的最后一个值。

以下是我的尝试:

private Runnable textUpdate = new Runnable() {
    public void run() {
        textOutput = (TextView)findViewById(R.id.textOutput);

        textOutput.setText("Reading Number " + (rIndex+1) + "\n");
        textOutput.append(sensorTime[rIndex] + "\n");
        textOutput.append("Value: " + rPoint.getValue() + "\n");
    }
};

...

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mHandler = new Handler();

    TextView textOutput = (TextView) findViewById(R.id.textOutput);
    textOutput.setText("Simulation output:\n");

    Button button03 = (Button) findViewById(R.id.button03);
    button03.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            for(int i = 0; i < index; i++) {
                rIndex = i;
                rPoint = dp[i];

                mHandler.postDelayed(textUpdate, 5000);
            }
        }
    });

}

无法理解为什么只有我尝试输出的信息的最后一个值才会显示在TextView中。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我看到的问题出在最后一行代码中:

mHandler.postDelayed(textUpdate, 5000);

您将以5000毫秒的速度发布所有更新,每个更新的时间间隔为毫秒(与手机可以循环的速度一样快)。

请改为尝试:

mHandler.postDelayed(textUpdate, i * 5000);

答案 1 :(得分:0)

你可以再次制作可运行的帖子。

private Runnable textUpdate = new Runnable() {
    public void run() {
        textOutput = (TextView)findViewById(R.id.textOutput);

        textOutput.setText("Reading Number " + (rIndex+1) + "\n");
        textOutput.append(sensorTime[rIndex] + "\n");
        textOutput.append("Value: " + rPoint.getValue() + "\n");

        mHandler.postDelayed(this, 5000);
    }
};

然后删除onPause

中的所有邮件