Android 部分手机adapter的notifyDataSetChanged()无效

  • 第一种情况,list的数据源没有改变,list指向另外一个内存块了。例如使用list = newList;方式。度娘一下有很多介绍;

  • 第二种情况,使用的控件为自定义控件,且为自适应高宽。即自定义控件中含有以下代码:

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
  • 这种情况需要在每次改变了数据源,调用 notifyDataSetChanged()之后,再调用控件的requestLayout() 方法

  • 注:宽高改变调用requestLayout() 方法,内容改变调用 invalidate() 方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,641评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,477评论 19 139
  • 简介 在Android开发中ListView是比较常用的组件。 以列表的形式展示具体内容。 并且能够根据数据的长度...
    上善若水Ryder阅读 11,849评论 2 5
  • 他讲着她,眼里充满了光。毕竟,那是他唯一暗恋的人,还为她,涉足第一份感情。我很欣赏,这样的爱 纯纯的,像蓝天那白云...
    以海为泉阅读 1,098评论 0 0
  • 世界的上的人,其实只分为三种:做事的人、做式的人、做局的人。 道生一,一生二,二生三,三生万物。这三种人,组建起了...
    JM_VIP_雄哥阅读 4,276评论 0 0