photoview+viewpager删除页卡时销毁了两三个相邻的页卡报下标越界 5C

使用photoview实现了本地大图的预览,和左右滑动,可以触摸缩放,内部的viewpager是图片说明,但是在删除当前照片时,发现pageradapter适配器时的销毁方法销毁了执行了两到三次,分别销毁了两个或者三个相邻的页卡,导致在删除最后一张照片时,或者从倒数第二张照片删除时报下标越界的错误。图片说明图片说明图片说明

3个回答

在你删除照片时, 照片集合大小变了, 你的index却没有变化, 我觉得是不是这里的问题

Silence1515
windfallsheng 问题是为什么适配器里的销毁方法会多次执行,正常的滑动时它销毁的是滑出去的页卡,为什么删除就不一样了,如果它不做多次销毁,就不会有这个错
接近 4 年之前 回复
Silence1515
windfallsheng 问题是为什么适配器里的销毁方法会多次执行,正常的滑动时它销毁的是滑出去的页卡,为什么删除就不一样了,如果它不做多次销毁,就不会有这个错
接近 4 年之前 回复

你的代码在报一个异常:ImageView no longer exists. You should not use this PhotoViewAttacher any more.

是否因为这一错误,将1个对象分配给了多个位置,导致其中1个位置删除该对象时,连带多个地方都进行删除?

Silence1515
windfallsheng 我又写了一个简单的demo测试了一下,这个问题应该是viewpager这个控件的执行原理的问题,只要是做这样的删除就是这种情况,不知该如何解,,我现在需要做的功能就是像手机相册预览本地大图的效果,可以左右滑动,可以缩放,并且又多一个重拍替换当前照片,可以删除,现在只有删除这个问题
接近 4 年之前 回复

百度到一个别人的博客文章,也许会对解决你的问题有帮助
http://blog.sina.com.cn/s/blog_6400e5c50101o1v1.html

erichk2008
erichk2008 回复erichk2008: http://www.tuicool.com/articles/fi6BJ3N
接近 4 年之前 回复
erichk2008
erichk2008 回复Silence1515: 从代码上看,mViewTreeObserver是一个全局变量,应该是声明在该类的最初了,文章中说的仅仅是该类中的该方法进行替换
接近 4 年之前 回复
Silence1515
windfallsheng 文章里说的在PhotoViewAttacher 文件中更改cleanup方法但是里面用到的mViewTreeObserver属性在哪声明的
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问