今天在做那个缓存处理的时候,爆出了以下异常:
在使用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里面。
相关推荐
首先,当我们在程序中修改了数据源,例如频道列表的顺序,我们通常会调用PagerAdapter的`notifyDataSetChanged()`方法来通知ViewPager数据已经改变。然而,仅仅调用这个方法并不一定能够立即触发页面的重新布局和...
### Calling Conventions in C/C++ #### 概述 在 C 和 C++ 编程语言中,函数调用约定(Calling Conventions)定义了如何在函数调用时传递参数、返回值以及清理调用栈的方式。不同的调用约定适用于不同的场景,并且...
标题中的"Python库 | joint-calling-0.1.88.tar.gz"表明这是一个与Python相关的库,且版本号为0.1.88,它被打包成一个tar.gz文件。这种格式通常用于在Unix/Linux环境中分发软件,因为它可以进行文件压缩并合并多个...
### SNP Calling与QUL算法详解 #### 一、引言 在生物信息学领域,单核苷酸多态性(Single Nucleotide Polymorphism, SNP)是基因组中最常见的一种变异类型。随着高通量测序技术的发展,对SNP进行准确检测变得尤为...
Who's calling? - **含义**:请问是谁? - **应用场景**:接听电话时询问对方身份。 ### 78. You did right. - **含义**:你做得对。 - **应用场景**:赞扬正确的行为。 ### 79. You set me up! - **含义**:...
Microsoft Teams Calling Solutions 知识点 Microsoft Teams Calling Solutions 是微软公司的一项电话解决方案,旨在帮助企业和中小型企业(SMB)提高通信效率,降低成本。根据 Forrester 的研究报告,本解决方案...
Who’s calling? - **含义**:谁在打电话? - **应用场景**:接听电话时询问来电者身份。 #### 78. You did right. - **含义**:你做得对。 - **应用场景**:对某人的正确行为表示赞同。 #### 79. You set me up!...
- **例句**: "I tried calling him several times." "I couldn’t reach him!" #### 42. I cross my heart! 我发誓是真的! - **应用场景**: 保证某件事情的真实性。 - **例句**: "I promise you, I didn’t lie....
在C++编程中,了解不同编译器和操作系统之间的调用约定(Calling Conventions)是非常重要的。这些约定定义了函数参数如何传递、返回值如何处理以及堆栈如何管理等细节。掌握这些知识对于优化代码性能、确保跨平台...
本篇将详细探讨一个名为"Smoking_calling_train.zip"的数据集,它是一个专门用于训练AI模型,识别人们在吸烟时打电话这一复杂行为的宝贵资源。通过对这个数据集的理解和分析,我们可以更深入地了解AI在图像识别和...
《ARASHI calling》是日本流行音乐团体ARASHI的一首歌曲,歌词中充满了积极向上的力量和对生命的执着追求。这首歌的主题围绕着把握现在、永不放弃和自我信念展开。 歌词中的“Calling”象征着呼唤,可能是对生活、...
### ARM SMC调用规范详解 #### 概述 ARM SMC(Secure Monitor Call)调用规范是ARM架构中安全模式与非安全模式之间进行通信的一种标准方式。它定义了如何在不同安全级别的软件间传递参数、返回值以及执行特定功能...
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 是一种规范,用于定义在 RISC-V 架构上编写程序时如何调用函数以及函数之间如何传递参数、返回值等。该文档详细介绍了 RISC-V...
该文档描述了常见C++开发平台的调用约定,涉及到16位、32位、64位的程序开发,跨越Windows、Linux、BSD、Mac(基于Intel处理器)等操作系统,包含众多常用的编译器,同时文档也比较新,甚至谈论了AVX-512指令集。
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. ...
基于GATK3.3以上版本的HaplotypeCaller标准流程进行,测试脚本以sra文件为最初输入,将读取文件见内的所有sra文件(视为同一个样本的数据),进行SNP Calling产生GVCF,然后用户可自行进行jointCall
标题“smoking_calling_val.zip”表明这是一个与人工智能(AI)相关的验证数据集,特别用于检测吸烟和打电话的行为。在人工智能领域,特别是计算机视觉和深度学习中,这样的数据集是训练和评估模型的关键组成部分。...
【app-app-calling-android-master源码】是一个针对Android平台的应用程序源码库,它提供了实现应用程序间通信(App-to-App Calling)的功能。这个源码项目对于开发者来说是一份宝贵的资源,可以帮助他们深入理解...
《Calling C from IDL》是2002年发布的一份文档,主要探讨了如何在IDL(Interactive Data Language)环境中调用C和C++代码。IDL是一种强大的数据处理和可视化语言,广泛应用于科学计算和数据分析领域。而C和C++是...