0

我有一个列表视图,其中包含每个项目的时间。我将时间显示在左侧,将时间从左侧显示到右侧。所以,假设我想显示下午 6 点,现在是下午 4.53 点,我会显示还剩 1 小时 7 分钟。这是计算到我的 BaseAdapter 中的。

现在我想每 30 秒刷新一次这些剩余时间。所以我尝试使用带有可运行的处理程序并调用 notifyDataSetChanged() 但我认为,数据需要更新,否则 notifyDataSetChanged() 什么都不做,对吧?

所以这里有一些代码:

可在我的活动中运行:

private Runnable updateScreen = new Runnable() {
    public void run() {
                    //update of the current time
        rightNow = Calendar.getInstance();
        timeNow = rightNow.get(Calendar.HOUR_OF_DAY) * 60 + rightNow.get(Calendar.MINUTE);

        if(adapter != null)
                adapter.notifyDataSetChanged();

        handler.postDelayed(this, 30000);
    }
};

这是我在我的活动中实例化我的适配器的方式:

adapter = new TimesAdapter(context, times, timeNow);

times 是一个 String[] 并且 timeNow 是一个 int。

你有什么想法吗?如果您需要更多代码,请告诉我。

4

1 回答 1

0

您不能从 ui 线程外部调用 notifyDataSetChanged()。将调用移至处理程序,列表应刷新。

于 2012-08-03T15:16:47.327 回答