全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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小时内与您取得联系。