Android 调用notifyDataSetChanged方法失败解决办法

如果使用ListView、GridView等进行数据展示,当绑定的数据有了更新的时候,需要实时刷新ListView,即调用Adapter的notifyDataSetChanged方法,但是很多人在调用之后会发现ListView是数据并没有刷新,这是什么原因呢?下面将对其进行详细解释。
1、数据源没有更新,调用notifyDataSetChanged无效。
2、数据源更新了,但是它指向新的引用,调用notifyDataSetChanged无效。
3、数据源更新了,但是adpter没有收到消息通知,无法动态更新列表。
一个典型的错误是:
list = new String[]{"listView item"};
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
listView.setAdapter(adapter);
list = new String[]{"new listView item"};
adapter.notifyDataSetChanged();
原先一直以为adapter会监听list的变化,当重新初始化list之后,ListView会自动进行数据的刷新,其实不然,adapter监听的是new String[]{"listView item"}的变化。adapter本身会保存一个对原始数据源(new String[]{"listView item"})的内部引用inner_list。
当执行了list = new String[]{"new listView1 item"};语句之后,重新初始化了list,也就是相当与切断了list与原始数据源(new String[]{"listView item"})的关系,因此之后调用notifyDataSetChanged并不会起作用,因为list 和inner_list已经是存在于堆上的完全不同的两个对象了。
错误回顾:
前段时间都是使用的Arrayist等等作为原始数据源,一般都是进行add之类的操作,所以list和inner_list和一直都是保持对同一个变量的引用,并没有出什么问题,当然,改为直接赋值就会出现调用无效的问题。所以要针对原始数据对象进行操作,而不是重新赋值。
看了一下Arrayadapter的源码:
ArrayAdapter:
public ArrayAdapter(Context context, int textViewResourceId, T[] objects) {
init(context, textViewResourceId, 0, Arrays.asList(objects));
}
Arrays:
public static <T> List<T> asList(T... array) {
return new ArrayList<T>(array);//注意这里的ArrayList不是常见的那个ArrayList,而是Arrays的一个内部类。。
}
以上就是Android 调用notifyDataSetChanged方法失败的常见原因及解决办法的总结,如有疑问希望大家留言讨论,或者到本站社区讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# 调用notifyDataSetChanged方法失败
# notifyDataSetChanged出错解决办法
# Android notifyDataSetChanged() 动态更新ListView案例详解
# 浅谈Android中适配器的notifyDataSetChanged()为何有时不刷新
# Android 中解决Viewpage调用notifyDataSetChanged()时界面无刷新的
# Android Listview notifyDataSetChanged()&
# 都是
# 解决办法
# 的是
# 就会
# 看了
# 如有
# 很多人
# 对其
# 希望能
# 希望大家
# 其实不然
# 谢谢大家
# 后会
# 什么问题
# 绑定
# 前段时间
# 一直以为
# 而不是
# 这是什么原因
# 原始数据
相关文章:
Android使用GridView实现日历的简单功能
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
婚礼视频制作网站,学习*后期制作的网站有哪些?
,网页ppt怎么弄成自己的ppt?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何解决ASP生成WAP建站中文乱码问题?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何快速搭建个人网站并优化SEO?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
网站企业制作流程,用什么语言做企业网站比较好?
如何高效完成自助建站业务培训?
建站之星云端配置指南:模板选择与SEO优化一键生成
深圳网站制作培训,深圳哪些招聘网站比较好?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
已有域名能否直接搭建网站?
如何自定义建站之星网站的导航菜单样式?
如何通过商城免费建站系统源码自定义网站主题?
ppt制作免费网站有哪些,ppt模板免费下载网站?
如何在IIS服务器上快速部署高效网站?
全景视频制作网站有哪些,全景图怎么做成网页?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
建设网站制作价格,怎样建立自己的公司网站?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何快速搭建自助建站会员专属系统?
如何高效搭建专业期货交易平台网站?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
5种Android数据存储方式汇总
威客平台建站流程解析:高效搭建教程与设计优化方案
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
建站VPS能否同时实现高效与安全翻墙?
网站制作需要会哪些技术,建立一个网站要花费多少?
建站上传速度慢?如何优化加速网站加载效率?
宝塔面板如何快速创建新站点?
黑客如何利用漏洞与弱口令入侵网站服务器?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
建站主机选虚拟主机还是云服务器更好?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
建站之星安装需要哪些步骤及注意事项?
如何构建满足综合性能需求的优质建站方案?
内网网站制作软件,内网的网站如何发布到外网?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
ui设计制作网站有哪些,手机UI设计网址吗?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
网站插件制作软件免费下载,网页视频怎么下到本地插件?
自助网站制作软件,个人如何自助建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。