如果你的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. CSS构造超链接

    超链接边框 派生超链接 属性选择器超链接 动态超链接 图像翻转超链接 CSS工具提示 1.给链接加上边框     A:link {         Color: #f00;         Text- ...

  2. git 入门学习笔记

    安装msysgit (模拟环境Git)安装后绑定邮箱和名字$ git config --global user.name "Your Name"$ git config --glo ...

  3. CPU与内存(经典问答)

    原文:http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如 ...

  4. GUI图形界面

    一.界面元素 1.首层容器:Jwindow.JFrane(窗体).JDialge(对话框).JApplet. 2.组件:标签.文本框.密码框.按钮.下拉列表.单选框.复选框.文本域等 注:标签JLab ...

  5. 【转】larbin中的url去重算法

    1.bloom filter算法 传说中,larbin使用bloom filter算法来进行url去重.那我们就先来了解下bloom filter算法好了. [以下转自:http://hi.baidu ...

  6. SAP ABAP程序下载器(增强版)

    在实际的项目中运用过几次 Mass download 这个程序,发现下载ABAP代码还真是利器,目前最新的版本是1.4.4,已经n年没有更新过了.使用过程中,发现其导出的HTML格式的代码有问题,包括 ...

  7. MySQL ddl丢表

      MySQL ddl丢表: MySQL server层为了和innodb层保持数据一致性,在写binlog和redo log时,引入了两阶段提交,但不同的变更产生的日志并非都使用这种策略. 下面就来 ...

  8. 初探Linux进程管理机制

    转至:http://ixdba.blog.51cto.com/2895551/543737 一 .进程的概念和分类1.进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时 ...

  9. Tao 1.2.0图形框架发布

    Tao 1.2.0图形框架发布         Tao图形框架是方便在Mono和.Net环境下进行游戏相关开发的库绑定和实用工具集.目前,对以下库提供支持: Cg - [Cg website] Dev ...

  10. 【Git - 基础篇】如何快速有效的管理你的代码 - 安装和配置

    [本文仅凭个人经验进行整理,如有错误,欢迎指正,互相学习^^] -------------------------------------------------------------------- ...