0

尝试更新 TextView 的文本时遇到问题。

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

这部分没有错误,而且做得很完美。

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

BaseAdapter 还实现了 OnTickListener。

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

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

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

  1. 在我前面提到的 HashMap 中找到 id 的 TextView。
  2. 更新 TextViews 文本。

现在这似乎以某种方式起作用。因为如果我上下滚动,我可以看到 TextViews 上的文本一旦再次显示在屏幕上就会更新。但如果 TextView 已经显示在屏幕上,它不会更新它。我试图调用 TextView.invalidate() 和 TextView.postInvalidate()。在我绝望的情况下,我什至尝试创建一个处理程序,该处理程序将发布一个可尝试更新 TextView 的 Runnable。

但似乎没有任何效果。关于如何更新 TextView 有任何想法吗?

TL DR:我需要知道如何从 BaseAdapter 中创建的 CountDownTimer 更新 ListItem 内的 TextView - 这是 Activity 的一部分。

对不起文字墙^^”

4

1 回答 1

2

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

然后在适配器上调用 notifydatasetchanged()。

于 2012-11-02T10:30:11.050 回答