使用Listview的时候: 当要动态显示更改后的数据(例如数据库改动), 很多人应该都用过notifyDataSetChanged();这个方法来刷新Listview,显示改后的数据.
这时候就要注意了:
......
private ArrayList<HashMap<String, Object>> usersList;
......
usersList= query(......); //根据查询函数获取一个ArrayList并赋值给绑定到Adapter的数据源usersList
sAdapter.notifyDataSetChanged();
......
如果你也是: 上面这种形式去刷新ListView的数据的话, 是不可以更新的. 必须改成如下形式:
......
//usersList= query(......);
usersList.clear();
usersList.addAll(query(......));
sAdapter.notifyDataSetChanged();
///
原因是: sAdapter会通过usersList获取List中的内容。但是实际上可能(也应该)是,在调用super(MyActivity.this, R.layout.item, usersList)时sAdapter保存了usersList指向原List(假设为List a)的引用,在调用query函数之后,usersList指向了一个新的List(List b)。但是在调用notifyDataSetChanged()时,sAdapter会跟据保存的引用(即指向List a的引用)去更新,因此当然还是原来的结果,不会进行更新。
如果大家也出现这种情况可以使用后者去刷新ListView, 应该就没问题了
关于ListView中notifyDataSetChanged()刷新数据不更新原因
原创
©著作权归作者所有:来自51CTO博客作者青年IT男1的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
如何做到无感刷新Token?
如何做到无感刷新Token?
System 表单 json token -
android Adapter notifyDataSetChanged不生效 notifydatasetchanged不刷新
本文主要阐述在使用RecyclerView中遇到notifyDataSetChanged列表不刷新问题,表现是:列表滑动时,notifyDataSetChanged可以正常刷新界面,但Fragment切换Tab后,再次滑动RecycleView,列表不刷新。 通过打断点调试,发现数据请求没有问题,每次滑动到底部时自动请求数据,在数据集上添加网络数据,通过打断点信息可得到size由20变为40,数据
RecycleView notifyDataSetChanged 数据 封装 数据集 -
android notifyDataSetChanged 闪烁问题 notifydatasetchanged不刷新
上一篇博客,我们的程序才刚开始做。 当你看到这一篇的时候我们的app已经接近尾声了,说实在的还是有点慢啊。 &nbs
安卓 adapter notifyDataChanged List 数据 -
java spi 读取外部配置
作者:侠梦前言 相信很多人遇到过这个问题:本地运行的好好的程序,怎么部署到线上就报找不到配置呢? 初识getResource案例一FieldMapConfig.class.getResource("p1.properties").getPath();这段代码在本地运行没有任何问题,一放到线上就报空指针。案例二读取配置,报错FileNotFoundException。乍一看,两段
java spi 读取外部配置 spring 动态读取配置文件内容的注解 System App spring