gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:05 24 4
gpt4 key购买 nike

我的应用程序中有一个自定义 ListView,其中包含一个 ImageView 和 3-5 个 TextView。

其中 1 个 TextView 显示当前时间和该 ListView 项目的指定时间之间的时间差。

点赞:5 分钟前发布

问题是,如何在不干扰 ListView 的情况下每分钟更新一次 TextView。

比如:如果我查看 ListView 5 分钟,对于每个可见的项目,仅此 TextView 必须从 1 分钟更改为 2 分钟,依此类推

我尝试了什么:

  1. 使用 System.currentTimeMillis() - givenTime[position];
  2. getView() 中设置此 TextView

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

  1. 每 1 分钟使用一个 timeTask() 线程并尝试更新每个项目的 TextView

这里的问题是我得到一个异常:

android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

此外,我不知道如何更改 Activity 中每个 ListView 项目的 TextView。

但这看起来像一个熟悉的案例。

我怎样才能做到这一点?

谢谢

最佳答案

使用 Handler 及其 postDelayed 方法使列表的适配器无效,如下所示:

final Handler handler = new Handler()
handler.postDelayed( new Runnable() {

@Override
public void run() {
adapter.notifyDataSetChanged();
handler.postDelayed( this, 60 * 1000 );
}
}, 60 * 1000 );

您只能在主 (UI) 线程中更新 UI。

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

关于Android:每 1 分钟更新一次 ListView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com