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

 

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

相关文章推荐

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

有时候我们需要修改列表里的数据,并实时刷新,我们除了在在外部调用adapter.notifyDataSetChanged()方法来通知activity刷新, 如果在adapter内部有涉及到更新数据...

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

导师安排我做一个小项目,其中涉及到利用Adapter作为ListView的适配器,为ListView提供数据。选中某一项后,要让这一项变成选中状态,也就是背景图片要换一下。下面我就用一个小例子来模拟。...

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

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

BaseAdapter的notifyDataSetChanged方法

都用过 BaseAdapter的notifyDataSetChanged()方法,用法很简单,当BaseAdapter的数据更新了,需要更改显示,这时候就要调用notifyDataSetChanged...

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

前一段时间在做一个项目的时候遇到了一个关于BaseAdapter的notifyDataSetChanged()方法无效问题,当时在网上搜了一个解决方法,今天又遇到了一个类似的问题,我在这里做个记录,防...

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

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

创建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目录结构...

SPOJ 154 Sweet and Sour Rock

Description A manufacturer of sweets has started production of a new type of sweet called rock....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BaseAdapter.notifyDataSetChanged()和.Collections.copy(destination, sour)
举报原因:
原因补充:

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