Android:每1分钟更新一次ListView项目

Arc*_*pgc 9 android listview

我的应用程序中有一个Custom ListView,包含一个ImageView和3-5个TextViews.

其中一个TextViews显示当前时间与为该ListView项指定的时间之间的时间间隔.

赞:发布于5分钟前

问题是,我如何每分钟更新此TextView而不会对ListView造成任何干扰.

喜欢:如果我正在查看ListView 5分钟,那么仅此TextView必须从1分钟更改为2分钟,以便每个项目可见

我尝试了什么:

  1. 使用getView()设置此TextViewSystem.currentTimeMillis() - givenTime[position];

但是如果我不滚动(不调用getView)或更改项目的可见性,TextView将不会更新.

  1. 每1分钟使用一次timeTask()线程并尝试更新每个项目的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.

通过在主线程中创建处理程序,您可以确保发布到处理程序的所有内容也在主线程中运行.