独立开发app是很好的提升自身的方式,当然,配上阅读,效果更佳;
这是一个折腾了我一下午的问题,知道看到了这篇帖子,慢慢有了眉目:戳我
首先叙述一下过程,我是一个ViewPager里面包含了7个ListView,之前我考虑是不是网上的那种adapter出了问题,后来仔细想,不可能,因为在链表中添加一个数据是可以动态刷新显示的。
所以,问题来了,我添加数据时代码是这样:
private List<List> recordList = new ArrayList<>(); private List<MyListViewAdapter> adapterList = new ArrayList<>(); 。。。。。 //将更新的数据插在头部 recordList.get(curretItem).add(0, recordMsg); adapterList.get(curretItem).notifyDataSetChanged();
这是没毛病的,很容易看出,RecordList是一个ArrayList包含了7个list<对象>,同时对应了7个adapter,每个adapter分别持有一个list<对象>,但是当有其他需求需要这样,清空RecordList中的每一个list<对象>,并重新放入对应的list,意思是替换以前的7个,我之前是这样写的:
recordList.clear(); //问题出在这里,直接将之前的7个从内存移除了 for (int i = 0; i < 7; i++) { List<Record> tmp = (List<Record>) findRecordByDay(dateList.get(i) + ""); recordList.add(tmp); } adapterList.get(curretItem).notifyDataSetChanged();
这种方案的结果是,无论如何,都是以前的值,不会刷新。于是尝试另外一种:
for (int i = 0; i < 7; i++) { List<Record> tmp = (List<Record>) findRecordByDay(dateList.get(i) + ""); recordList.get(i).clear(); recordList.set(i,tmp); //问题出在这里,直接把那7个list替换了 } adapterList.get(curretItem).notifyDataSetChanged();
这种是,第一次执行可以刷新数据,第二次便无法再次刷新
当谷歌半天看到那帖子时开始有点懵,后来想了下,道理是一样的,那几个list不能更改引用,一旦更改便无法再次调用。
最后这是解决方案
for (int i = 0; i < dateList.size(); i++) { List<Record> l = (List<Record>) findRecordByDay(dateList.get(i) + ""); recordList.get(i).clear(); for (int j = 0; j<l.size(); j++) { recordList.get(i).add( l.get(j)); } }
数据结构确实是个好东西,但是多少人在接触的时候认为其没有用。。。特此记录2017.7.9
2017.7.11
一次偶然的机会在另一个界面开发的时候又发现了这个问题,后来仔细的阅读了下list的api后,发现了更加简单的办法:
使用list.addAll();
add是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素
result.addAll(list);//把list中的每一个元素加到result中,result.size()==list.size()
addAll是传入一个List,将此List中的所有元素加入到当前List中,也就是当前List会增加的元素个数为传入的List的大小
result.add(list);//将list作为一个元素加到result中,则result.size()为1
即:
addAll(Collection c)
add(int index,Elelemt e)
————————————–
addAll(Collection c) 此方法按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。
所以我的代码最后改成了这样:
for (int i = 0; i < dateList.size(); i++) { recordList.get(i).clear(); recordList.get(i).addAll(findRecordByDay(dateList.get(i) + "")); }
本站由以下主机服务商提供服务支持:
0条评论