您的位置:首页 > 其它

Adapter.notifydatasetChanged()没有用的解决方法;Only the original thread that created a view hierarchy 。。。。

2014-05-17 14:32 197 查看

一、使用了Adapter.notifydatasetChanged()没有用

我使用list.andall();方法得到的数据Adapter.notifydatasetChanged()有用,但给list重新赋值(不是从新new一个)后就不行。

原因:数据没变或者数据中的条数没变。可以参考一下这篇博客:http://cancait.blog.163.com/blog/static/2133574420139308186865/

解决方法:在adapter中设置一个方法,用于改变数据。例如:

public void setDataList(List<CateGoodsBean> array) {

this.array=array;

}

每次在使用Adapter.notifydatasetChanged()时,在前面加上一句Adapter.setList(array);

二、Only the original thread that created a view hierarchy can touch its views.

不能在子线程中操控主线程中的view

虽然知道不能在子线程中操控主线程中的view,但使用AsyncTask时就忘的一干二净了。以前都是使用handler

我当时是使用的android提供的的异步线程AsyncTask做的,我在doInBackground()方法中使用了主线程的view报的这个错误。

但在onPostExecute()方法中是可以的。此方法可以执行相当于handler中public boolean handleMessage(Message msg)中可以执行的代码。

doInBackground()就相当于Thread中run()方法中执行的东西。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐