最近项目里需要一个轮播图,去循环轮播三张广告图,一开始使用的是阿里开源的banner,很好用,省去了一系列繁琐的步骤,但是呢,最近改界面,新的UI设计师给出的轮播图是底部指示器和图片有一定的距离的,这就尴尬了,因为github上能找打的viewpager轮播图库,基本上都是指示器和图片重叠的 ,对于这种定制化的界面,只能自己动手写了,想省事是不可能的了。
说做就做,布局里使用V4包下的viewpager控件,创建适配器,这些大家都很熟悉,就不再一一赘述,运行后,问题来了,老是会出现如下错误
这个也很好久解决,意思就是说,你在添加一个视图的时候必须要把他所在的父类视图移除掉。
嗯,会看了下代码,决定在adapter里按照提示移除父类视图:于是改成了这样子:
在adapter实例化每个view的时候先去获取parent,如果存在,那么就先去移除,个人感觉很完美了,运行一下,OK了,心里窃喜,
但是在配合rv刷新的时候还是继续报这个错误,这就奇怪了,百度了一番,也是没有找到解决办法。
既然找不到解决方案,就只能自己捋捋代码,看看逻辑的问题了。原来,我是在Fragment里实例了一个Int 类型的图片资源数组,再去遍历这个数组,遍历的同时new出来一个新的imagerview ,添加到一个list里面。最后才是把这个盛装图片的集合传到adapter里面,那么问题会不会是处在 new Image这个步骤里呢????
我感觉八九不离十已经找到问题的症结了,在new image的时候需要传一个context上下文对象,或许就这里除了问题了。
那么,这就好解决了,在布局里声明一个imageview控件 不就好了吗,是吧,哈哈哈,后来,我这样做了,真的是不会再报错了
至此, 脱坑了,轮播图不会再出现任何异常了。希望记录下加深下印象,同时 能够帮助到还在坑里挣扎的人。上班了。