关于gallery使用中position为0时两次调用getView的解决

   项目中使用了gallery,并自定义了adapter用来多线程加载网络图片,但是在使用过程中发现点击进入gallery界面后,第一张图片下载了两次。通过日志发现,是因为在position为0的位置上两次调用了了adapter的getView函数。

   对此,百度得到的解释是“第一次Gallery调用Adapter的getView的时候不知道加载多少个View才能填充满Gallery的宽度,所以,第一次调用是测试性的获取一个View,来measure 宽度,而不会用来显示,也不会用来缓存,暂时称为伪调用。而第二次调用,才是获得要真正显示的View”

   那么,如何解决该问题呢。目前,百度上还没有漂亮的解决方案---即无法通过修改api的调用或者通过android自带的功能、函数来解决。那么只能是自己想野路子了。那就是自己判断Gallery是否是第一次调用Adapter的getView。

  

if(first){//由于position=0时会调用两次getView因此对第一次调用时进行特殊操作避免重复读取图片
    		convertView = LayoutInflater.from(context).inflate(R.layout.item,null); //实例化convertView  
            Gallery.LayoutParams params = new Gallery.LayoutParams(Gallery.LayoutParams.FILL_PARENT,Gallery.LayoutParams.FILL_PARENT);
            convertView.setLayoutParams(params);
            convertView.setTag(null);
    		first=false;
    		return convertView;
    	}


    上述代码,在第一次调用getView时,并不实质性的读取图片,而是做了特殊的"空"处理。这样,就避免了多次加载第一张图片的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值