The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged

泡在网上的日子 / 文 发表于2014-10-23 11:39 次阅读 异常

今天开发的时候遇到如题所述的异常,找了一下在satckoverflow上看到一个比较靠谱的答案:

After ADT 22 the PagerAdapter has gotten very strict about calling notifyDataSetChanged() before calling getCount().  It evidently keeps track of what it thinks the count should be and if this is not the same as what getCount() returns it throws this exception.  So the solution is simply to call notifyDataSetChanged() on the adapter every time the size of the data changes.

在adt22之后,PagerAdapter对于notifyDataSetChanged()和getCount()的执行顺序是非常严格的,系统跟踪count的值,如果这个值和getCount返回的值不一致,就会抛出这个异常。所以为了保证getCount总是返回一个正确的值,那么在初始化ViewPager时,应先给Adapter初始化内容后再将该adapter传给ViewPager,如果不这样处理,在更新adapter的内容后,应该调用一下adapter的notifyDataSetChanged方法。


收藏 赞 (3) 踩 (10)
上一篇:android图片压缩质量参数Bitmap.Config RGB_565 ARGB_8888
android中的大图片一般都要经过压缩才显示,不然容易发生oom,一般我们压缩的时候都只关注其尺寸方面的大小,其实除了尺寸之外,影响一个图片占用空间的还有其色彩细节。 打开Android.graphics.Bitmap类里有一个内部类Bitmap.Config类,在Bitmap类里createBi
下一篇:android多媒体数据库框架介绍
Android平台上的媒体文件管理和桌面系统不同。在桌面系统上,不同目录下的媒体文件呈树状结构显示给用户,用户需要进入不同目录寻找该目录下的文件。而在Android平台上,不同目录下的媒体文件则以一层列表方式显示给用户,用户不需进入子目录就可以列出(某