Android:线程从网络加载数据后更新Listview

15 android listview

  1. 我喜欢当用户启动应用程序时我的GUI立即出现.
  2. 然后一些数据(文本,图片)被加载到后台(如YouTube应用程序).
  3. ListView和Gallery将使用此新数据自动更新.

我启动我的ListView,启动一个线程并加载数据......然后ListView没有得到更新!有几个人告诉我应该用notifyDataSetChanged().但是我不能把这个命令放在我的线程中(只是未知).

有任何想法吗?

小智 19

我有同样的问题......当我遇到这个问题时,我很兴奋.但没有答案?:-(

之后,让问题持续了大约两周,我在这里找到了解决方案:

长话短说:

从上面链接引用:

我们必须使用Handler对象,因为在单独的线程中我们无法更新大多数UI对象.当我们向Handler发送消息时,它将被保存到队列中并尽快由UI线程执行.

查看代码后,您会看到作者所说的内容.
注意:即使使用处理程序,Android也可能不允许您从线程的run()方法更新视图对象.我收到了这个错误:

05-31 02:12:17.064: ERROR/AndroidRuntime(881):
android.view.ViewRoot$CalledFromWrongThreadException: 
Only the original thread that created a view hierarchy can touch its views.
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我在run()方法中更新了一个数据数组,并使用该数组更新了处理程序的handleMessage()方法中的视图.

我希望这有助于其他人.