ListView的动态刷新问题(notifyDataSetChanged没作用)

如果listview的数据源使用了arraylist1

ArrayList<String> arraylist1 = new ArrayList();

arraylist1.add("gggg");

arraylist1.add("hhhh");

这时候ArrayList1已经指向了一个堆内存上;

这时候我们想改变arraylist1中的数据,创建了一个arraylist2:

ArrayList<String> arraylist2 = new ArrayList();

arraylist2.add("aaaaa");

arraylist2.add("bbbbb");

如果我们直接用arraylist1 = arraylist2,这样做实际上是把arraylist1也指向了arraylist2指向的那个堆内存。

所以这时候我们调用notifyDataSetChanged这种方法去更新数据是没有效果的,原因是由于arraylist1的指向已经改变,而notifyDataSetChanged是检查arraylist1 指向的数据是否改变。所以正确的操作:

arraylist1.clear();

arraylist1.addAll(arraylist2);

adapter.notifyDataSetChanged();

这样,arraylist1的指向就不会改变,还是指向原来的那块堆内存,然后调用notifyDataSetChanged()就可以起作用了。

猜你喜欢

转载自blog.csdn.net/enbir/article/details/80388844