BaseAdapter.notifyDataSetChanged()和.Collections.copy(destination, sour)

原创 2013年12月04日 10:33:30

昨晚做一个listview需要根据用户点击刷新listview数据的,因为数据又是从服务器获取的就有了下面的方法

List<QueryCarDetailObj> listcarinfo = new ArrayList<QueryCarDetailObj>();//全局变量;

     adp = new Tran_ListAdp(Tran_main.this,listcarinfo);
      listview.setAdapter(adp);

设置的设配器了根据用户点击刷新listview数据的方法;

public void getlistviewdata(int carid)
 {
  listcarinfo=list.get(carid).getQueryCarDetailList();

  adp.notifyDataSetChanged();

 }

貌似没问题,就是不刷新,然后想想,适配器是保存了一个listcarinfo的引用,而listcarinfo=list.get(carid).getQueryCarDetailList();这个返回了的是一个新的引用,所以一刷新开始的数据也没了,除非重新setAdapter,最后想想就复制吧

Collections.copy(listcarinfo,list.get(i).getQueryCarDetailList() );郁闷

Source does not fit in dest" Exception报错,原来说我的目标数组长度不够源数组,我去我刚new的数组肯定size是0啦,不知道谷歌怎么想的,集合不是可以自动设置长度。好了烦躁了,干脆for循环在添加

总结

adp.notifyDataSetChanged();

1必须是开始设置适配器的资源对象的引用,就是引用地址不能变了

2资源对象的资源确实变了

Collections.copy(listcarinfo,list.get(i).getQueryCarDetailList() );

就推荐好文章

http://darrenzhu.iteye.com/blog/1642672

http://jxdwuao.iteye.com/blog/1140400

 

遇到问题记下来无聊时候,

iOS学习笔记--浅拷贝和深拷贝——拷贝集合类(Copying Collections)

注:如果没有特别指出,这里的集合均指:collection。 对象的复制有两种:浅拷贝和深拷贝。正常的拷贝是浅拷贝,产生一个新的集合,共享原对象的所有权。深拷贝是从原对象创建新的对象,并把这些新...
  • itianyi
  • itianyi
  • 2013年03月13日 13:58
  • 1828

copy和mutableCopy到底是浅拷贝还是深拷贝?

请尊重原作者的辛苦劳动,转载请注明出处。 实践是检验真理的唯一标准。下面就让我们在实践中认识copy和mutableCopy的共同点和区别。 1.copy和mutableCopy的实现过程。 想要一个...
  • joe1209
  • joe1209
  • 2014年08月14日 19:57
  • 1536

ping ip主机提示Destination host unreachable问题解决方法小结

ping 出现destination host unreachable的问题 一、问题一:虚拟机和主机互ping不通 安装了虚拟机,以太网选的是默认的桥接,可安装完后,不能和主机ping通,也不能...
  • yzit0905
  • yzit0905
  • 2016年10月07日 09:58
  • 12493

android如何在BaseAdapter内使用notifyDataSetChanged()方法以及线程的使用

有时候我们需要修改列表里的数据,并实时刷新,我们除了在在外部调用adapter.notifyDataSetChanged()方法来通知activity刷新, 如果在adapter内部有涉及到更新数据...
  • qq544529563
  • qq544529563
  • 2014年08月06日 16:39
  • 1467

60BaseAdapter导致notifyDataSetChanged()无效的几个原因及处理方法

暂时只碰到这几个问题: 一、ScrollView中嵌套ListView或GridView 原因:两个的滚动监听冲突 解决方法:重写ListView或GridView packa...
  • chenfuduo_loveit
  • chenfuduo_loveit
  • 2015年01月07日 15:04
  • 525

从源代码的角度分析--在BaseAdapter调用notifyDataSetChanged()之后发生了什么

看到了一篇文章,挺有助于理解notifyDataSetChanged()方法的转载自:http://www.cnblogs.com/kissazi2/p/3721941.html导师安排我做一个小项目...
  • wx_anonymity
  • wx_anonymity
  • 2016年03月25日 16:04
  • 118

BaseAdapter导致notifyDataSetChanged()无效的四个原因及处理方法

前一段时间在做一个项目的时候遇到了一个关于BaseAdapter的notifyDataSetChanged()方法无效问题,当时在网上搜了一个解决方法,今天又遇到了一个类似的问题,我在这里做个记录,防...
  • lxq_xsyu
  • lxq_xsyu
  • 2014年03月17日 11:26
  • 5925

BaseAdapter的notifyDataSetChanged方法

都用过 BaseAdapter的notifyDataSetChanged()方法,用法很简单,当BaseAdapter的数据更新了,需要更改显示,这时候就要调用notifyDataSetChanged...
  • sunzheng_123
  • sunzheng_123
  • 2014年01月25日 10:20
  • 5118

java.util.Collections.copy()方法注意点

今天发现单独的将一个ArrayList的对象添加到另外一个ArrayList的时候,总是源列表和目的列表相同的内存地址。原因如下: 偶然看到了Collections的copy(List desc...
  • sxb0841901116
  • sxb0841901116
  • 2014年07月22日 08:50
  • 1112

创建mave web项目,默认只有src/main/resources文件夹,创建src/main/java的Source Floder时,报 The folder is already a sour

问题描述:  创建maevn web项目,在选择maven_archetype_web原型后,默认只有src/main/resources这个Source Floder。 按照maven目录结构...
  • qq_35804654
  • qq_35804654
  • 2017年06月01日 20:26
  • 1479
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BaseAdapter.notifyDataSetChanged()和.Collections.copy(destination, sour)
举报原因:
原因补充:

(最多只允许输入30个字)