【发布时间】:2019-03-22 02:26:53
【问题描述】:
在自定义 ListView 中,我有一个 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中。
第一次有效,因为第一次设置Adapter时调用getView。
下次它给出异常:
android.view.ViewRoot$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图。
那么我应该在哪里使用这个代码呢?
如果我的做法本身不好,请告诉我如何实现这一点。
谢谢
【问题讨论】:
-
如果要在线程中更新 UI,请使用 runOnUiThread
-
我认为即使是处理程序也可以正常工作
-
@Sharath This: java2s.com/Code/Android/UI/TimingActivity.htm 在 getView()??
-
是的,在 getview() 中编写处理程序逻辑
标签: android listview timertask