Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
来源:互联网 发布:600756 浪潮软件 编辑:程序博客网 时间:2024/06/04 17:41
之前被问到过很多次这个问题,后来干脆总结一下可能出现不刷新的几个点;
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里面的数据
还有其他问题请给我留言!
- Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
- Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
- Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
- listView使用simpleAdapter通过notifyDataSetChanged()方法刷新数据问题
- Android listView使用Adapter.notifyDataSetChanged()不刷新
- ListView notifyDataSetChanged()不刷新数据
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- ListView中notifyDataSetChanged()刷新数据不更新原因分析
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- Android FragmentStatePagerAdapter.notifyDataSetChanged()刷新数据的问题
- 关于 ListView 调用 notifyDataSetChanged 不刷新的问题
- listview notifyDataSetChanged不刷新
- notifyDataSetChanged ListView 不刷新
- C#中yield return用法分析
- HTML 学习 (一)
- C++纯虚函数
- Mac OS X Git安装教程
- 提供一个对话框供用户选择一个文件夹路径。
- Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
- 自定义view(一)
- linux 中 kill() 与 signal() 函数
- win7 右键卡死
- [Maven实战]发布maven项目到中央仓库(Central Repository)
- EJB 是怎样通过Resteasy进行验证的
- session和cookie机制
- 自定义简单的Toast,可自行修改文字、图片、样式
- 获取当前运行应用信息的几种方法