java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive

java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make sure your adapter calls notifyDataSetChanged() when its content changes产生的原因是listview的mItemCount和adapter.getCount()不相等。mItemCount是在onmeasure和setadapter的时候赋值的,调用适配器的notifyDataSetChanged()方法就会重新调用onmeasure()方法重新赋值。

产生的原因:在子线程更新了适配器的数据也就是改变了getcount()方法,但是一般调用notifyDataSetChanged()是要在UI线程,所以这里就会有一段时间的间隔,而在这个间隔的时间如果又刚好在另外一个地方重新刷新listview,这时mItemCount就是上次赋值的值,而getcount已经改变了,就会抛出异常。

解决方法:就是改变完适配器的数据就要立马调用notifyDataSetChanged方法,所以一般就是不要在子线程更新适配器的数据。

你可能感兴趣的:(android开发)