从CountDownTimer更新TextView的多个实例的文本

时间:2012-11-02 10:18:40

标签: android listview textview baseadapter countdowntimer

尝试更新TextView的文本时出现问题。

我有一个MainActivity,我在其中创建了一个带有空ListView的布局。 要使用自定义ListItems填充此ListView,我创建了一个自定义AsyncTaskLoader,用于检索填充到ListItems的信息以及填充加载到ListItems中的数据的自定义BaseAdapter。

这部分没有任何错误,只是完美无缺。

但是,我在尝试从ListView中的ListItem更新TextView上的文本时遇到问题。 你看,我创建了一个自定义的CountDownTimer,它将一个名为OnTickListener的接口作为构造函数中的参数。 我每次创建一个ListItem时都有一个唯一的id,我使用它来存储HashMap中的ListItem的TextView,并将CountDownTimer存储在HashMap中。创建这些HashMaps并将其保留在自定义BaseAdapter中。

BaseAdapter还实现了OnTickListener。

每次MyCountDownTimer调用OnTick时,它都会调用构造函数中提供给它的OnTickListener,并传递两个参数:int id和String text。

这将调用BaseAdapters实现OnTickListener的唯一方法:public void OnTick(int id,String text)。

在onTick方法中,我执行以下操作:

  1. 在前面提到的HashMap中找到id的TextView。
  2. 更新TextViews文本。
  3. 现在这似乎在某种程度上起作用。因为如果我向上和向下滚动,我可以看到TextViews上的文本一旦再次显示在屏幕上就会更新。但是如果它已经显示在屏幕上,它不会更新TextView。 我试图调用TextView.invalidate()和TextView.postInvalidate()。在我的绝望中,我甚至尝试创建一个Handler,它会发布Runnable,它会尝试更新TextView。

    但似乎没有任何效果。对于如何更新TextView有什么想法?

    TL DR: 我需要知道如何在BaseAdapter中创建的CountDownTimer中更新ListItem中的TextView(它是Activity的一部分)。

    抱歉文字墙^^“

1 个答案:

答案 0 :(得分:2)

您应该更新适配器的“数据”,该数据应包含将在每个文本视图上显示的每个项目的内容。

然后在adaprer上调用notifydatasetchanged()。