我的应用程序中有一个Custom ListView,包含一个ImageView和3-5个TextViews.
其中一个TextViews显示当前时间与为该ListView项指定的时间之间的时间间隔.
赞:发布于5分钟前
问题是,我如何每分钟更新此TextView而不会对ListView造成任何干扰.
喜欢:如果我正在查看ListView 5分钟,那么仅此TextView必须从1分钟更改为2分钟,以便每个项目可见
我尝试了什么:
System.currentTimeMillis() - givenTime[position];但是如果我不滚动(不调用getView)或更改项目的可见性,TextView将不会更新.
这里的问题是我得到一个例外:
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
Run Code Online (Sandbox Code Playgroud)
而且我不知道如何从Activity中为每个ListView项更改TextView.
但这看起来像一个熟悉的案例.
我怎样才能实现这一目标?
谢谢
Jes*_*erB 38
使用a Handler及其postDelayed方法使列表的适配器无效,如下所示:
final Handler handler = new Handler()
handler.postDelayed( new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
handler.postDelayed( this, 60 * 1000 );
}
}, 60 * 1000 );
Run Code Online (Sandbox Code Playgroud)
您只能更新主(UI)线程中的UI.
通过在主线程中创建处理程序,您可以确保发布到处理程序的所有内容也在主线程中运行.
| 归档时间: |
|
| 查看次数: |
19850 次 |
| 最近记录: |