notifyDataSetChanged() 无法刷新问题
来源:互联网 发布:数据分析的应用有哪些 编辑:程序博客网 时间:2024/05/22 17:02
使用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, 应该就没问题了
这时候就要注意了:
......
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, 应该就没问题了
- notifyDataSetChanged() 无法刷新问题
- ViewPager+Fragment+GridView方案notifyDataSetChanged()无法刷新数据问题
- 关于Adapter的notifyDataSetChanged无法刷新的问题。
- Android FragmentStatePagerAdapter.notifyDataSetChanged()刷新数据的问题
- Imageloader, listview.notifyDataSetChanged刷新问题,图片闪烁
- 解决viewpager adpter.notifyDataSetChanged不刷新问题
- 关于adapter.notifyDataSetChanged无法更新的问题
- Android 利用adapter.notifyDataSetChanged()无法更新问题
- Adapter.notifyDataSetChanged()无法更新的问题
- ListView中notifyDataSetChanged()无法刷新数据的错误实例
- 关于 ListView 调用 notifyDataSetChanged 不刷新的问题
- Adapter中notifyDataSetChanged()不刷新GetView的问题
- android listview 删除item 刷新 notifyDataSetChanged()失效问题
- 关于notifyDataSetChanged不能动态刷新ListView的问题
- ViewPager数据修改使用notifyDataSetChanged无刷新的问题
- listView使用simpleAdapter通过notifyDataSetChanged()方法刷新数据问题
- 解决ViewPager调用notifyDataSetChanged()时,界面无刷新问题
- 解决用notifyDataSetChanged动态刷新ListView无效的问题
- linuxCNC
- java实战(一)-----------jdk环境配置
- Git版本控制教程,原文保存在百度文库中
- PHP字符串过滤函数
- activiti5 流程复用技术 callActivity
- notifyDataSetChanged() 无法刷新问题
- 代码收藏1-转换小写英文首字母为大写
- java计算两日期之间的天数
- 内存操作(指针,变量的生存期及作用范围,良好的动态内存申请和释放习惯)
- Oracle 动态游标的用法
- C++中gcnew()
- 后缀数组(SA倍增算法)
- Java使用memcached
- java获得某一天的下一天