RecyclerView设置适配器Adapter时不能传递数据集合的直接引用,否则会导致主Activity数据混乱
来源:互联网 发布:手机淘宝话费怎么退款 编辑:程序博客网 时间:2024/05/16 07:55
比如:直接从主Activity中将数据源传递给adapter构建对象,然后adapter中对数据做了其他操作,这可能会引起主Activity中数据的变化:
public AdImagePicker(Activity activity, List<String> imgList, OnImageViewListener imageViewListener) { this.activity = activity; this.list = imgList;//直接将引用传递 list.add("default"); this.imageViewListener = imageViewListener; }
或者:
public AdImagePicker(Activity activity, List<String> pathList, OnImageViewListener imageViewListener) { this.activity = activity; if (pathList != null) { if(list==null){ list = new ArrayList<>(); }else{ list.clear(); } list = pathList; //区分添加图片item list.add("default"); } this.imageViewListener = imageViewListener;}
然后我们将主Activity中的集合打印出来:
path:/storage/sdcard0/DCIM/Camera/IMG_20160627_194105.jpg
path:/storage/sdcard0/DCIM/Camera/IMG_20160627_194102.jpg
path:/storage/sdcard0/360Download/206FF0C0FD7237E1C5F12C246CF067DA.png
path:default
我们看到,在adapter中修改了集合中的数据,主Activity中数据也发生了变化。
如果这样写:
public AdImagePicker(Activity activity, List<String> pathList, OnImageViewListener imageViewListener) { this.activity = activity; if (pathList != null) { if (list == null) { list = new ArrayList<>(); } else { list.clear(); } for (int i = 0; i < pathList.size(); i++) { list.add(pathList.get(i)); } //区分添加图片item list.add("default"); } this.imageViewListener = imageViewListener;}
打印输出:
path:/storage/sdcard0/DCIM/Camera/IMG_20160627_194105.jpg
path:/storage/sdcard0/DCIM/Camera/IMG_20160627_194102.jpg
path:/storage/sdcard0/360Download/206FF0C0FD7237E1C5F12C246CF067DA.png
我们这里是将数据copy一份到了另一个集合,而不是直接传递给另一个集合,所以不会有问题。
0 1
- RecyclerView设置适配器Adapter时不能传递数据集合的直接引用,否则会导致主Activity数据混乱
- 使用RecyclerView.adapter.notifyDataSetchang()不能更新数据
- recyclerview 数据混乱
- recyclerView.notifyItemRemoved数据索引混乱
- Android adapter 数据适配器
- 适配器Adapter填充数据
- 通用的RecyclerView Adapter适配器
- 【intent extra】Android Activity直接传递数据
- 关于activity的直接传递数据【A向B传递数据】
- 【Android基础】数据适配器Adapter的使用
- 关于listview的适配器Adapter里面的数据集合Arraylist list指针问题。
- 万能RecyclerView的数据适配器BaseRecyclerViewAdapterHelper
- Android开发RecycleView的适配器(adapter)无法更新集合中数据
- 怎么把一个集合的数据复制到另一个集合 不是引用传递(地址传递)
- mysql5使用时编码混乱会导致的问题
- Adapter传递数据到Activity(接口回调)
- Activity跳转时的数据传递
- 避免 ListView 的 控件重用机制 导致视图/数据混乱
- Apache(Web服务器)和Nginx
- Android布局优化
- Eclipse 在 JavaWeb 项目 sun.misc.BASE64Encoder 找不到的解决方法
- 网游点卡接口说明文档
- sumlime配置
- RecyclerView设置适配器Adapter时不能传递数据集合的直接引用,否则会导致主Activity数据混乱
- viewpager之自动滑动(ScheduledExecutorService的使用)
- 程序员如何打造薪资15k
- 欢迎使用CSDN-markdown编辑器
- 第十五天
- 浅析静态库链接原理
- Android service(无论前后台) 后台(其应用不在屏幕)运行一段时间后被屏蔽了网络
- ImageMagick使用
- CSS基础学习7-CSS设置组织元素(span和div)