如果你的UI是GridView ListView等需要用到adapter添加数据的控件

那么有时候里面的数据改变了 List<>内容改变了 那就要更新数据

关于adapter的数据更新

ada.notifyDataSetInvalidated();

ada.notifyDataSetChanged();

之前一位前辈的帖子比喻得很好

我们可应用粮仓来解释一下,两者的区别。

notifyDataSetChanged:粮仓中得粮食少了,或者多了,发送通知。

notifyDataSetInvalidated:粮仓变换了,比如原来从A仓取粮食,现在换成了B粮仓。

情况不同则调用不用的函数进行更新。

----------------------华丽分割线------------------------------------

但是在我的测试中,我发现我属于第一种情况,则是只改变了数据的内容 并没有改变地址,没有New一个新的数据源出来,按道理调用notifyDataSetChanged()就可以解决

但是当我需要删除里面一项,把NUM减一,调用notifyDataSetChanged(),发现Item的第一项 或者是 前几项 都消失了!

按一下其中一个Item,图标又恢复了正常的数目,正常的显示。

最后多经测试发现 一开始我的Item是10项,如果你添加一项 删一项把Item数目控制大于等于10项,调用notifyDataSetChanged(),则不会有问题

当你添加一项,删除两项,Item数目变成9项,则比一开始你setAdapter()时那个项数少 则会错乱。

只是发现了这个规律,但是原理不知道,如果有大神知道请留下你的答案,感觉不尽。也希望能帮到卡在上面的童鞋。

小生经验贴 --- adapter的数据更新的更多相关文章

  1. 【原创】关于Adapter的The content of the adapter has changed问题分析

    关于Adapter的The content of the adapter has changed问题分析   1.问题描述 07-28 17:22:02.162: E/AndroidRuntime(1 ...

  2. 【转】关于Adapter的The content of the adapter has changed问题分析 关于Adapter的The content of the adapter has changed问题分析

    原文网址:http://www.cnblogs.com/monodin/p/3874147.html 1.问题描述 1 07-28 17:22:02.162: E/AndroidRuntime(167 ...

  3. Android AdapterView 源码分析以及其相关回收机制的分析

    忽然,发现,网上的公开资料都是教你怎么继承一个baseadapter,然后重写那几个方法,再调用相关view的 setAdpater()方法, 接着,你的item 就显示在手机屏幕上了.很少有人关注a ...

  4. SwipeRefreshLayout和RecyclerView类

    1 SwipeRefreshLayout和RecyclerView之间的关系 内容栏上下滚动是RecyclerView控制的,只有当内容栏滑动到最顶上时,再也拉不动了的时候,这个时候将动作交给Swip ...

  5. Android开发60条技术经验总结

    Android开发60条技术经验总结,以下是全文: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有 ...

  6. Android 开发60条技术经验总结(转)

    Android 开发60条技术经验总结: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. ...

  7. Android之RecyclerView的原生Bug-Inconsistency detected. Invalid view holder adapter positionViewHolder{a1bbfa3 position=2 id=-1, oldPos=-1, pLpos:-1 no parent}

    今天在运行自己编写的App时,突然发现App在运行时闪退,然后就查看了Android Studio的Log,发现了这个错误,上网查了一下,才知道是RecyclerView的原生Bug,在数据更新时会出 ...

  8. MVC实用构架设计(三)——EF-Code First(6):数据更新最佳实践

    前言 最近在整理EntityFramework数据更新的代码,颇有体会,觉得有分享的价值,于是记录下来,让需要的人少走些弯路也是好的. 为方便起见,先创建一个控制台工程,使用using(var db ...

  9. C#开发微信门户及应用(44)--微信H5页面开发的经验总结

    在我们开发微信页面的时候,需要大量用到了各种呈现的效果,一般可以使用Boostrap的效果来设计不同的页面,不过微信团队也提供很多这方面的资源,包括JSSDK的接口,以及Weui的页面样式和相关功能页 ...

随机推荐

  1. 【三支火把】---CDS5516舵机调试以及自己的感想!

    我依然坚持,任何一次自己的心有感触都要及时的记录下来,这样你的努力才是真正的努力. 这两天一直在用STM32调试CDS5516舵机,其实很简单,但是却花了将近两天的时间,过程之曲折我就不说了,先总结一 ...

  2. C# 生成解决方案失败,点击项目重新生成报找不到命名空间

    1.点击生成解决方案失败,点击项目“重新生成”找不到“XXX”命名空间. 尝试点击"重新生成解决方案"多次,然后点击项目的"重新生成"即可解决.

  3. ElasticSearch+Springboot实际应用:索引同步建设,搜索过程

    1.介绍 springboot框架,众多自动化的部署和约定配置,造成了springboot的着手麻烦,熟练后可以快速快捷进行开发,常用作快捷开发的java底层框架.各位看官都是大神,自行体会.     ...

  4. python的一些总结1

    1.安装环境 window用户下载 python :https://www.python.org/downloads/release/python-2710/ 安装不解释.. 配置环境变量  找到 P ...

  5. Codeforces Gym 100513I I. Sale in GameStore 暴力

    I. Sale in GameStore Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/p ...

  6. android短信的接收和发送处理

    一 初始化 手机开机初始化调用GSMPhone 构造函数. GSMPhone (Context context, CommandsInterface ci, PhoneNotifier notifie ...

  7. pt-table-checksum 与pt-table-sync

    http://www.lai18.com/user/481193.html?id=481193&p=1 主从数据校验使用percona-toolkit工具集的以下两个工具(主库上使用): pt ...

  8. Windows下codeblocks的安装与配置

    最近自己正好要使用codeblocks编写C++程序,安装好却发现无法编译,如果您也遇到相似问题,可以参考本文. 如果您已安装codeblocks,想转换成中文界面,直接参考Step 2. 如果您C程 ...

  9. oracle_partition sample

    (1.) 表空间及分区表的概念 表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表,所以称作表空间. 分区表: 当表中的数据量不断增大,查询数据的速度就会变慢 ...

  10. php编程中容易忽略的地方

    一:fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ...