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



一、使用了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()方法中执行的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值