使用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, 应该就没问题了

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. GestureDetector部分源码分析
  5. Interpolators详解
  6. android 1.6中LinearLayout getBaseline函数的一个bug
  7. 幻灯片播放学习笔记
  8. android ACodec MediaCodec NuPlayer flow
  9. android基本程序单元Activity

随机推荐

  1. ubuntu12.04 android studio 安装(装完后
  2. 实现Android(安卓)ListView 自动加载更多
  3. ionic中android,和ios生成的一些兼容问题-
  4. Android(安卓)TTS学习——保存对你的喜欢
  5. Android安装应用后点击,打开.(Open)带来
  6. android开发环境 国内镜像 及Android(安
  7. Android-Fresco系列3 Producer
  8. Android中怎样获取SD卡路径
  9. Android(安卓)UI学习 - Tab的学习和使用
  10. Android实现RecyclerView显示json数据并