Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从倒计时更新TextView多个实例的文本_Android_Listview_Textview_Baseadapter_Countdowntimer - Fatal编程技术网

Android 从倒计时更新TextView多个实例的文本

Android 从倒计时更新TextView多个实例的文本,android,listview,textview,baseadapter,countdowntimer,Android,Listview,Textview,Baseadapter,Countdowntimer,我在尝试更新TextView的文本时遇到问题 我有一个main活动,在其中我创建了一个带有空ListView的布局。 为了用自定义ListItems填充此ListView,我创建了一个自定义AsyncTaskLoader,用于检索要填充到ListItems的信息,还创建了一个自定义BaseAdapter,用于填充加载到ListItems中的数据 这部分没有错误,而且做得很完美 但是,我在尝试从ListView中的ListItem更新TextView上的文本时遇到问题。 你看,我已经创建了一个自定

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

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

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

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

BaseAdapter还实现OnTickListener

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

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

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

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

    但似乎一切都不起作用。有没有关于如何更新TextView的想法

    TL DR: 我需要知道如何从BaseAdapter中创建的倒计时程序更新ListItem中的TextView(这是活动的一部分)


    很抱歉出现了文本墙^^“

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


    然后在adaprer上调用notifydatasetchanged()。

    非常感谢!:-)这就像一个符咒。我不敢相信解决方案会这么简单。最简单的解决方案是最好的:)