在自定义列表视图中,我有一个TextView,其文本必须每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:只有创建视图层次结构的原始线程才能触及其视图。
那么我应该在哪里使用这段代码?
如果我的练习本身不好,请告诉我如何实现这一目标。
谢谢
答案 0 :(得分:3)
您无法从不是UI线程的线程更新UI对象。 试试这个:
this.runOnUiThread(new Runnable(){
@Override
public void run(){
//update your TextView here
}
})
答案 1 :(得分:2)
您也可以尝试以下链接中的示例。