notifyDataSetChanged()刷新数据不更新原因
2017-05-24 13:48
337 查看
使用Listview的时候: 当要动态显示更改后的数据(例如数据库改动), 很多人应该都用过notifyDataSetChanged();这个方法来刷新Listview,显示改后的数据. 引用网上的一片文章:
这时候就要注意了:
如果大家也出现这种情况可以使用后者去刷新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()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- (15)关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 【转】关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- ListView中notifyDataSetChanged()刷新数据不更新原因分析
- AJAX无刷新更新数据
- 无刷新显示即时更新数据两例
- (转载)用javascript实现无刷新更新数据(学习备用)
- DataSet的作用以及创建和刷新并依次更新原始数据的步骤
- 创建和刷新 DataSet 并依次更新原始数据的步骤
- 用javascript实现无刷新更新数据的详细步骤 asp
- Prototype更新数据不刷新实例