用户
 找回密码
 注册会员
搜索

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

[复制链接]
发表于 2012-5-8 20:34:34
        之前遇到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方法中。

        这样问题就解决了。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

返回顶部