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