基于时间刷新视图的内容在一个活动

问题描述:

我试图编写单个活动应用程序,扩展ListActivity。我有一个类生成数据字符串数组。我想要的是定期刷新活动视图,因此它将代表实际值。我制作了自己的适配器来扩展BaseAdapter。它在单行中包含2个TextView,用这些字符串数组进行膨胀。 当我使用setListAdapter(myAdapter)在onCreate中设置我的新适配器时,它工作正常。我只是不知道,我怎么可以定期刷新视图来表示在第一次通货膨胀后myAdapter中使用的数组的实际值。我试图在Thread.sleep()的帮助下定期在另一个线程中调用notifyDataSetChanged(),但那不起作用,因为你不能从另一个线程调用notifyDataSetChanged()。 我是一个初学者和适配器的新手,已经阅读了大量的例子,但我只是不知道。基于时间刷新视图的内容在一个活动

为onCreate()中的活动创建一个新的Handler(),并向它发送一个调用notifyDataSetChanged()的Runnable。不管你喜欢,你都可以重新安排Runnable的时间间隔。

+0

thx求救!重复刷新工作在活动的类中创建处理程序,在onCreate之外创建一个刷新函数,并在其中发布带有notifyDataSetChanged()的runnable。之后它称自己重复。现在它工作。但是它提出了一个问题,为什么我不能在runnable的run()函数中做一段时间(真正的)cicle以获得周期性?为什么这不起作用?为什么我必须在一个单独的函数中实现它,这个函数会一遍又一遍地递归调用它自己? – IBoS 2011-04-05 22:24:52

+0

您在Runnable中使用的代码在UI线程上运行。这就是Handler的用途,可以将代码从另一个线程发布到UI线程(您只能从UI线程访问UI元素)。你永远不会想要在UI线程上执行一段时间(true)循环,因为它会冻结你的应用程序。通过处理程序不断重新调度Runnable允许UI线程保持对用户输入的响应。 – LeffelMania 2011-04-05 23:04:12

+0

哦,我想我明白了。非常感谢你! – IBoS 2011-04-06 00:39:51