读书人

ListActivity刷新数据后界面没法更新的

发布时间: 2012-08-21 13:00:22 作者: rapoo

ListActivity刷新数据后界面无法更新的解决

?? ? ? ?之前遇到ListActivity数据更新后界面却没更新的问题。当时是直接重新跳转到这个Activity解决的,因为之前的操作

?

大多是跳转到一个新的界面对ListActivity的数据进行操作后再重新回来,因此用户不会发现有什么不同。今天遇到要直接

?

在ListActivity里对数据进行操作更新界面,再次遇到数据更新后界面却没更新的问题。查了一些资料后解决了。

?

如果使用ArrayAdapter,那么就不要再对ArrayAdapter中封装的List进行数据操作了,这样是没用ArrayAdapter

?

有类似add()、clear()等方法操作数据,然后用arrayAdapter.notifyDataSetChanged()和

?

ListActivity.setListAdapter(arrayAdapter)更新数据。如果使用CursorAdapter对应可执行cursor的requery()。

?

?

之后就打算开一个线程更新数据然后关闭之前打开的ProgressDialog。结果报了异常:

?

android.view.ViewRoot$CalledFromWrongThreadException:Only the?original thread that created a view

?

hierarchy can touch its views.意思是说自定义的线程不能更新ui,只能在主线程里更新ui。

?

?

解决方法有两种:

?

1.在Activity.onCreate(Bundle savedInstanceState)中创建一个Handler类的实

?

例,重写Handler类的handleMessage方法,在其中调用更新界面显示的函数。

?

2.利用Activity.runOnUiThread(Runnable),将更新函数写在Runnable的run方法

?

中。

?

这样问题就解决了。


?

读书人网 >移动开发

热点推荐