2015年12月15日 关于引用和适配器的数据更新的一个低级坎
2015-12-15 11:07
169 查看
Android开发中常常用到data_arraylist和adapter进行数据的传递和显示,于是犯了一个低级错误,事后发现真心是个低级错误。
在初始化数据时,new 了adapter,把data_arraylist也穿进去了,以后的更新arraylist和adapter的notifyDataSetChaged()就行了。
由于开始时arraylist是个空的没有数据的,所以第一次数据时我把解析出来的array的直接赋给data_arraylist了,然后adapter的notifyDataSetChaged(),发现不更新数据。
于是debug,发现data_arraylist的数据的确已经变了,数据个数也已经和请求的数据一样了,但是adapter就是不更新。
后来才脑子转过来,data_arraylist被请求后解析的数据array赋值后,data_arraylist已经不是原来的data_arraylist了,而adapter只认识原来的data_arraylist,至于为什么data_arraylist不是原来的data_arraylist了,因为引用到不同的内存位置了。
这个问题真心低级。
最安全的代码方式应该是:
data_arraylist.clear();
data_arraylist.addall(array);
adapter.notifyDataSetChaged();
在初始化数据时,new 了adapter,把data_arraylist也穿进去了,以后的更新arraylist和adapter的notifyDataSetChaged()就行了。
由于开始时arraylist是个空的没有数据的,所以第一次数据时我把解析出来的array的直接赋给data_arraylist了,然后adapter的notifyDataSetChaged(),发现不更新数据。
于是debug,发现data_arraylist的数据的确已经变了,数据个数也已经和请求的数据一样了,但是adapter就是不更新。
后来才脑子转过来,data_arraylist被请求后解析的数据array赋值后,data_arraylist已经不是原来的data_arraylist了,而adapter只认识原来的data_arraylist,至于为什么data_arraylist不是原来的data_arraylist了,因为引用到不同的内存位置了。
这个问题真心低级。
最安全的代码方式应该是:
data_arraylist.clear();
data_arraylist.addall(array);
adapter.notifyDataSetChaged();
相关文章推荐
- 2015 12月计划
- 【转】Pro Android学习笔记(三):了解Android资源(上)
- 常用jquery小结
- 谷歌安卓官方文档之编译内核
- Xcode提示:your session has expired please log in
- dt中ID转化为long[]
- HDU 1051 二维排序安排时间 (贪心||STL_set 水过)
- linux下gcc的使用方法
- UIWebView 无缝切换到 WKWebView
- 一个java程序员自学IOS开发之路(十三)
- 【转】Pro Android学习笔记(二):开发环境:基础概念、连接真实设备、生命周期
- HTTP协议请求方式:GET 和 POST区别
- C++函数参数中的省略号用法分析
- 简单的三子棋游戏
- QQ聊天、带表情、可翻页(二)【有bug】
- 【Ogre引擎架构】 第九讲 像素卷积的艺术-GaussianBlur高斯模糊(二)
- Internal error. Please report to https://code.google.com/p/android/issues
- 【转】Pro Android学习笔记(一):Android 平台 2013.6.4
- style-drawable
- 服务器上的内容拷贝注意事项