尝试更新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方法中,我执行以下操作:
现在这似乎在某种程度上起作用。因为如果我向上和向下滚动,我可以看到TextViews上的文本一旦再次显示在屏幕上就会更新。但是如果它已经显示在屏幕上,它不会更新TextView。 我试图调用TextView.invalidate()和TextView.postInvalidate()。在我的绝望中,我甚至尝试创建一个Handler,它会发布Runnable,它会尝试更新TextView。
但似乎没有任何效果。对于如何更新TextView有什么想法?
TL DR: 我需要知道如何在BaseAdapter中创建的CountDownTimer中更新ListItem中的TextView(它是Activity的一部分)。
抱歉文字墙^^“
答案 0 :(得分:2)
您应该更新适配器的“数据”,该数据应包含将在每个文本视图上显示的每个项目的内容。
然后在adaprer上调用notifydatasetchanged()。