|
之前遇到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方法
中。
这样问题就解决了。 |
|