之前被问到过很多次这个问题,后来干脆总结一下可能出现不刷新的几个点;

1.涉及到数据库

当要动态显示更数据库改动,相信大家应该都用过notifyDataSetChanged();.
例如:
......
private ArrayList<HashMap<String, Object>> usersList;
......
usersList= query(......); //根据查询函数获取一个ArrayList并赋值给绑定到Adapter的数据源usersList
sAdapter.notifyDataSetChanged();
上面这种形式去刷新ListView的数据的话, 是不可以更新的. 必须改成如下形式:
usersList.clear(); //先清空集合
usersList.addAll(query(......));
sAdapter.notifyDataSetChanged();
原因是:

Adapter在调用super(MyActivity.this, R.layout.item, usersList)时Adapter保存了指向原List的引用,在调用query函数之后,usersList指向了一个新的List。但是在调用notifyDataSetChanged()时,Adapter会跟据保存的引用去更新,因此当然还是原来的结果,不会进行更新。

2.布局xml中属性值的问题

当你布局中ListView的android:layout_height="wrap_content"时,可能导致页面没有及时更新而出现数据不更新的问题只要将ListView的布局属性更改为android:layout_height="match_parent"即可。

3.其他问题可能就是数据或者List没有及时update里面的数据


还有其他问题请给我留言!

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. android如何得到控件大小 OnGlobalLayoutListener
  4. Android(安卓)6.0事件分发机制源码解析
  5. Android(安卓)Socket服务器 Servlet服务器
  6. Android(安卓)数据存储机制
  7. Android开发之ClipboardManager
  8. Android(安卓)中文 API AsyncTask
  9. android Fragment开发文档翻译 - 1

随机推荐

  1. android设置textview限制字数以省略号显
  2. android ListView嵌套checkbox并取代chec
  3. CheckBox组件的熟悉
  4. Android架构分析之Android开发环境搭建
  5. android 默认应用安装在sd卡中 (>2.2)
  6. android 5.0 默认水波纹背景属性,可设置
  7. android中gallery的使用
  8. Android重要控件概览(上)
  9. Android DrawerLayout 侧边栏使用之道
  10. Android 打勾显示输入的密码