`

he adapter's contents without calling PagerAdapter#notifyDataSetChanged!

阅读更多

今天在做那个缓存处理的时候,爆出了以下异常:

 

在使用ViewPager时报出The application’s PagerAdapter changed the adapter’s contents without calling PagerAdapter#notifyDataSetChanged

 

于是我们肯定会调用adapter.notifyDataSetChanged,但是会发现,还是报出了 java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!   

 

当你使用ViewPager来显示网络的图片时,为了用户体验,你肯定一边下载一边更新Adapter。需要注意的是如果这个时候你的ADT版本是22以上的时候,你一定会很纠结:我明明调用了adapter.notifyDataSetChanged,但是还是报出了同样的异常提示。

 

在ADT22中,上面的代码肯定会报错的。原因就要看官方文档对support/v4/view/PagerAdapter的一个解释:

 

          PagerAdapter supports data set changes. Data set changes must occur on the main thread and must end with a call to notifyDataSetChanged() similar to AdapterView adapters derived from BaseAdapter.

 

出错原因是:数据更新必须在main thread(主线程)进行更新!!!结束前还得调用notifyDataSetChanged()!!!

 

 

解决办法:

 

1)将你往集合里面添加数据的代码写到main thread(主线程)里面。

 

2)如果你使用的asynctask 那么你更新集合的代码一定不能再doInBackground方法里面。

 

3)如果你使用new Thread,你的更新集合的代码一定不能再run里面,要在Handler里面。

 

分享到:
评论

相关推荐

    Android 中ViewPager重排序与更新实例详解

    首先,当我们在程序中修改了数据源,例如频道列表的顺序,我们通常会调用PagerAdapter的`notifyDataSetChanged()`方法来通知ViewPager数据已经改变。然而,仅仅调用这个方法并不一定能够立即触发页面的重新布局和...

    Calling Conventions Topics

    ### Calling Conventions in C/C++ #### 概述 在 C 和 C++ 编程语言中,函数调用约定(Calling Conventions)定义了如何在函数调用时传递参数、返回值以及清理调用栈的方式。不同的调用约定适用于不同的场景,并且...

    Python库 | joint-calling-0.1.88.tar.gz

    标题中的"Python库 | joint-calling-0.1.88.tar.gz"表明这是一个与Python相关的库,且版本号为0.1.88,它被打包成一个tar.gz文件。这种格式通常用于在Unix/Linux环境中分发软件,因为它可以进行文件压缩并合并多个...

    snp calling qul 算法

    ### SNP Calling与QUL算法详解 #### 一、引言 在生物信息学领域,单核苷酸多态性(Single Nucleotide Polymorphism, SNP)是基因组中最常见的一种变异类型。随着高通量测序技术的发展,对SNP进行准确检测变得尤为...

    常用英语1000句!常用英语1000句!

    Who's calling? - **含义**:请问是谁? - **应用场景**:接听电话时询问对方身份。 ### 78. You did right. - **含义**:你做得对。 - **应用场景**:赞扬正确的行为。 ### 79. You set me up! - **含义**:...

    Microsoft Teams Calling Solutions Calling Solutions.pdf

    Microsoft Teams Calling Solutions 知识点 Microsoft Teams Calling Solutions 是微软公司的一项电话解决方案,旨在帮助企业和中小型企业(SMB)提高通信效率,降低成本。根据 Forrester 的研究报告,本解决方案...

    1000句英语经典口语

    Who’s calling? - **含义**:谁在打电话? - **应用场景**:接听电话时询问来电者身份。 #### 78. You did right. - **含义**:你做得对。 - **应用场景**:对某人的正确行为表示赞同。 #### 79. You set me up!...

    大学生应该脱口而出的100个精典英文句子

    - **例句**: "I tried calling him several times." "I couldn’t reach him!" #### 42. I cross my heart! 我发誓是真的! - **应用场景**: 保证某件事情的真实性。 - **例句**: "I promise you, I didn’t lie....

    calling_conventions.pdf

    在C++编程中,了解不同编译器和操作系统之间的调用约定(Calling Conventions)是非常重要的。这些约定定义了函数参数如何传递、返回值如何处理以及堆栈如何管理等细节。掌握这些知识对于优化代码性能、确保跨平台...

    Smoking_calling_train.zip

    本篇将详细探讨一个名为"Smoking_calling_train.zip"的数据集,它是一个专门用于训练AI模型,识别人们在吸烟时打电话这一复杂行为的宝贵资源。通过对这个数据集的理解和分析,我们可以更深入地了解AI在图像识别和...

    ARASHI calling 歌词

    《ARASHI calling》是日本流行音乐团体ARASHI的一首歌曲,歌词中充满了积极向上的力量和对生命的执着追求。这首歌的主题围绕着把握现在、永不放弃和自我信念展开。 歌词中的“Calling”象征着呼唤,可能是对生活、...

    arm smc calling convention

    ### ARM SMC调用规范详解 #### 概述 ARM SMC(Secure Monitor Call)调用规范是ARM架构中安全模式与非安全模式之间进行通信的一种标准方式。它定义了如何在不同安全级别的软件间传递参数、返回值以及执行特定功能...

    SAP FRC接口调用calling RFC_METADATA_GET -- see log for details报错解决方案

    SAP.Middleware.Connector.RfcCommunicationException:“destination XXXX failed when calling RFC_METADATA_GET -- see log for details” 猜测的原因: 老的DLL库在获取接口实例时,会触发“RFC_METADATA_GET”...

    RISC-V Calling Conventions, Version 1.1

    ### RISC-V Calling Conventions,Version 1.1 #### 概述 RISC-V Calling Conventions 是一种规范,用于定义在 RISC-V 架构上编写程序时如何调用函数以及函数之间如何传递参数、返回值等。该文档详细介绍了 RISC-V...

    calling_conventions C++调用约定

    该文档描述了常见C++开发平台的调用约定,涉及到16位、32位、64位的程序开发,跨越Windows、Linux、BSD、Mac(基于Intel处理器)等操作系统,包含众多常用的编译器,同时文档也比较新,甚至谈论了AVX-512指令集。

    Calling All T.O.T.S. 呼叫所有 宝宝快递 第2季全50集1080P

    T.O.T.S.S02.1080p.HULU.WEBRip.DDP5.1.x264 Pip the penguin and Freddy the flamingo become the first non-stork employees for T.O.T.S (Tiny Ones Transport Service) who deliver babies to their parents. ...

    GATK HaplotypeCaller SNP Calling 自动化流程

    基于GATK3.3以上版本的HaplotypeCaller标准流程进行,测试脚本以sra文件为最初输入,将读取文件见内的所有sra文件(视为同一个样本的数据),进行SNP Calling产生GVCF,然后用户可自行进行jointCall

    smoking_calling_val.zip

    标题“smoking_calling_val.zip”表明这是一个与人工智能(AI)相关的验证数据集,特别用于检测吸烟和打电话的行为。在人工智能领域,特别是计算机视觉和深度学习中,这样的数据集是训练和评估模型的关键组成部分。...

    app-app-calling-android-master源码

    【app-app-calling-android-master源码】是一个针对Android平台的应用程序源码库,它提供了实现应用程序间通信(App-to-App Calling)的功能。这个源码项目对于开发者来说是一份宝贵的资源,可以帮助他们深入理解...

    Calling C from IDL(2002)

    《Calling C from IDL》是2002年发布的一份文档,主要探讨了如何在IDL(Interactive Data Language)环境中调用C和C++代码。IDL是一种强大的数据处理和可视化语言,广泛应用于科学计算和数据分析领域。而C和C++是...

Global site tag (gtag.js) - Google Analytics