Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
2016-11-30 16:15
651 查看
原文链接:http://blog.csdn.net/caihongdao123/article/details/51513410 点击阅读原文
-------------------------
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.涉及到数据库
当要动态显示更数据库改动,相信大家应该都用过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();方法不刷新的问题
- listView使用simpleAdapter通过notifyDataSetChanged()方法刷新数据问题
- android使用notifyDataSetChanged()方法更新数据失效,adapter的数据更新了,但是ListView的内容没有更新;
- android使用notifyDataSetChanged()方法,adapter的数据更新了,但是ListView的内容没有更新
- android ListView 刷新数据,加载时遇到的数组越界问题
- android使用notifyDataSetChanged()方法,adapter的数据更新了,但是ListView的内容没有更新;
- 关于android的listview数据列表显示的下拉和刷新报错问题
- Android ListView的适配器 Adapter 中GetView方法调用次数大于数据条数的问题
- Android 关于ExpandableListView刷新问题的解决方法
- 在适配器的构造方法添加假数据,然后请求数据后listview等的图片显示不完整,刷新之后才显示的问题。
- android listView或GridView数据不刷新的问题
- 关于ListView的数据刷新问题(notifyDataSetChange()方法的调用场景)
- Android Listview制定属于自己的适配器,完美解决数据刷新等问题!
- Android关于ListView中使用EditText获取输入数据和刷新ListView数据的解决方案
- Android笔记--在切换fragment时,让fragment里的listview实时刷新数据的一种方法
- Android;sql数据库:关于删除数据库数据无法刷新listview并且新listview的修改增加功能出现bug的问题
- 在listview的item中使用EditText,刷新后保存数据的方法
- android中ListView数据刷新时的同步方法
- android使用notifyDataSetChanged()方法,adapter的数据更新了,但是ListView的内容没有更新;