美文网首页
Android中一个ListView中图片加载的问题

Android中一个ListView中图片加载的问题

作者: Dragon_Boat | 来源:发表于2017-05-06 14:57 被阅读29次

    大概如下图所示的一种需求:整体是一个列表,列表最末尾有一项和其他item略有区别的item。


    image.png

    刚开始时,由于左侧都是按照图片来加载,并没有出现任何问题。使用Fresco库加载,也不会出现列表滑动时,图片错乱的问题。

    然而后续迭代时,需要将图片的背景和icon分离,方便产品配置颜色或者支持主题等。
    因此这个ImageView就分为两部分处理,icon部分继续交给Fresco加载,背景部分则需要自己处理。这里是根据图片的url来判断,如果符合要求,则手动构造一个drawable并setBackground()到相关的view当中去。

    然而由于listview中,itemview的视图实际上是会被复用的,因此当对其中某些view设置了background后,滑动几次,这个view将可能被复用到各个itemview上,特别的,对于尾部的item,非常容易获取到头部item的缓存视图。即便所有icon都能正常加载,但是item的背景依然会出现复用的情况。

    知道问题根源,解决其他就很简单,在adapter的getView方法中,判断当前viewHolder的类型,如果是末尾这种特殊的情况,手动清理view的background即可。

    PS:Android view.setBackgroundDrawable()方法已经被设为废弃,而view.setBackGround()方法最小支持sdk 16,项目最低支持sdk 15也是蛋疼。。。

    相关文章

      网友评论

          本文标题:Android中一个ListView中图片加载的问题

          本文链接:https://www.haomeiwen.com/subject/egnetxtx.html