Android:定期更改自定义ListView的TextView的文本

问题描述 投票:1回答:2

在自定义ListView中,我有一个TextView,其Text必须每1分钟定期更改为当前时间和日期。

所以我这样做了:

Timer mTimer = new Timer();
mTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {

currentTime = System.currentTimeMillis();
(holder.myText).setText(new Date(currentTime));
}
}, 0, 60000);

在自定义适配器的getView中。

它适用于第一次,因为第一次设置适配器时会调用getView。

下次它给出异常:

android.view.ViewRoot $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。

那么我应该在哪里使用这段代码呢?

如果我的练习本身不好,请告诉我如何实现这一目标。

谢谢

android listview timertask
2个回答
3
投票

您无法从不是UI线程的线程更新UI对象。试试这个:

this.runOnUiThread(new Runnable(){
   @Override
   public void run(){
       //update your TextView here
   }   
})

2
投票

您也可以尝试以下链接中的示例。

http://www.java2s.com/Code/Android/UI/TimingActivity.htm

© www.soinside.com 2019 - 2024. All rights reserved.