用notifyDataSetChanged没作用

转载 2016年06月01日 22:22:42

也许很多开发的朋友,尤其是Android初学者,在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。

其实,在使用notifyDataSetChanged过程中,还是有细节需要注意的。举个例子:

我的ListView使用的数据源是来自ArrayList。通常我们的做法是创建一个已经有我们想要提供给ListView的数据的ArrayList,例如:

ArrayList<Integer> list  = new ArrayList<Interger>;
list.add(1);

这里我们的list已经是指向了一个堆内存上了。接着我们想要改变list中的数据,而这个时候,就需要注意了,举个例子:我们在代码中有另外一个ArrayList叫做newlist,它是使用下面代码创建出来的:

ArrayList<Integer> newlist  = new ArrayList<Interger>;
list.add(2);

这个时候,newlist指向的是一个和list指向不同的堆内存,这个时候,我们直接用list = newlist来把newlist的数据交给list,在这里,实际上只是把list的指向改变了,让它也指向newlist指向的那个内存。那么这个时候我们再调用notifyDataSetChanged这个方法来通知listview更新数据就起不了任何作用了,原因很简单,就是list的指向已经改变,而调用notifyDataSetChanged会去检查原来list指向的数据是否变化,但是这时的list已经不是原来的list了,所以它无法判断,只能不作出响应了。那么,这个问题的解决方法是直接在原来的list上面更改数据,可以使用下面的代码来操作:

list.clear();
list.addAll(newlist);
adapter.notifyDataSetChanged();

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

总结:在这里的重点就是要注意在开始时传给ListView的list指向不能被改变,需要从始至终指向同一个内存,这样调用notifyDataSetChanged后就能够检测到list的数据变化,从而触发ListView的重新绘制了!

相关文章推荐

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

也许很多开发的朋友,尤其是Android初学者,在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。 其实,在使用notifyData...

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

也许很多开发的朋友,尤其是Android初学者,在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。 其实,在使用notifyData...

android - ListView的动态刷新问题——用notifyDataSetChanged没作用

在使用notifyDataSetChanged过程中,还是有细节需要注意的。举个例子: 我的ListView使用的数据源是来自ArrayList。通常我们的做法是创建一个已经有我们想要提供给ListV...

Android控件——ListView使用notifyDataSetChanged没作用

也许很多开发的朋友,尤其是Android初学者,在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。其实,在使用notifyDataSetC...

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

也许很多开发的朋友,尤其是Android初学者,在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。 其实,在使用notifyData...

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

也许很多开发的朋友,尤其是Android初学者(笔者也是个初学者),在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。 其实,在使用...

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

原文转自:http://blog.csdn.net/wuzhipeng1991/article/details/38820647 非常感谢原博主的这篇文章,即解决了初学者的问题,又介绍了noti...

自定义adapter 改变数据后调用notifyDataSetChanged() 不起作用的解决方法

1.问题描述:         ListView填充的数据改变时需要及时刷新页面,正常来讲我们只需要调用 adapter.notifyDataSetChanged();  方法就可以了,系统使用观...
  • dxswzj
  • dxswzj
  • 2013-10-31 22:10
  • 3445

Android 解决 adapter.notifyDataSetChanged() 不起作用

转载请注明出处:使用 Listview 的时候,给 adapter 的数据源 List 添加了新的数据,然后调用 adapter.notifyDataSetChanged(),发现 listview ...

FragmentActivity 进行重新加载item对象不起作用 notifyDataSetChanged 也不行

FragmentActivity中 进行重新加载item对象不起作用 重新初始化Adapter对象不行 notifyDataSetChanged 也不行 在定义的 Adapter对象中添加一个方法  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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