Android Adapter遇到的崩溃问题
将一个列表(ArrayList等)通过Adapter绑定到ListView上后,由于数据来自网络,在使用过程中需要进行刷新。
当刷新时,程序发生以下错误:
The content of the adapter has changed but listview did not receivie a notification
后发现并不是在其他线程中更改了适配器,而是对数据源的list进行了clear,相当于对数据源进行了修改,其结果类似于add,remove方法,都会引发该错误。
正确的做法是,只要对数据源的列表进行了修改,就应该立刻调用适配器的notifyDataSetChanged方法进行通知。
而如果只想利用数据源干别的事,则需要撤销对listview的绑定,或者重新建一个数据源的副本列表进行操作。总之,在数据源(在本例中就是ArrayList)被绑定的时候,不要轻易的操作它,除非界面更新需要。