BaseAdapter上的notifyDataSetChanged没有数组中的更新数据

时间:2012-08-03 15:05:48

标签: android listview

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

现在我想每隔30秒刷新这些时间。 所以我尝试使用带有runnable的处理程序并调用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);
    }
};

以下是我在我的Activity中实现我的适配器的方法:

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

times是String [],timeNow是int。

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

1 个答案:

答案 0 :(得分:0)

您无法从ui线程外部调用notifyDataSetChanged()。将调用移动到处理程序,列表应该刷新。