notifyDataSetChanged是在adapter的数据源发生变化时,在程序中主动通知adapter更新数据源,这里存在一个问题:当数据源的引用指向别的list时,notifyDataSetChanged是无效的,也就是说notifyDataSetChanged只识别最原始的数据源,也就是集合变量第一次指向的那个list对象,下面用代码说明:
public void handleMessage(Message msg) {
switch (msg.what) {
//数据解析成功200
case Config.JSON_EXACT:
List<PhotoAlbumBean> llist= (List<PhotoAlbumBean>) msg.obj;
list.addAll(llist);
adapter.notifyDataSetChanged();
break;
//数据解析失败500
case Config.JSON_ERROR:
Toast.makeText(ClassAlbumActivity.this, Config.JSON_FAIL, Toast.LENGTH_SHORT).show();
break;
可以清楚的看到,handler拿到list对象后不是直接赋给list引用,而是通过list的addAll方法,这样保证list始终是引用最原始的那个list对象。