异步加载图片错位的问题

  //创建接口  在listview里的getview里实现加载图片

public interface ImageCallBack {


    public void setSuccessImage(ImageView img, Bitmap bitmap);
}

//预设一张图片

        holder.img.setImageResource(R.mipmap.ic_launcher);


        //进行判断在地址不为null的情况下
        if(lists.get(position).getPicUrl()!=null){


            //给控件设置一个tag值,tag值具有唯一性
            holder.img.setTag(lists.get(position).getPicUrl());




            //异步获取图片
            ImageHeler.loadImage(lists.get(position).getPicUrl(), holder.img, new ImageCallBack() {
                @Override
                public void setSuccessImage(ImageView img, Bitmap bitmap) {
                    //判断tag值
                    if(img.getTag().toString().equals(lists.get(position).getPicUrl())){
                        img.setImageBitmap(bitmap);
                    }

                }


            public class ImageHeler {


    /**
     * 加载图片
     * @param picPath 图片的路径
     * @param img 要展示的控件
     */
    public static void  loadImage(final String picPath, final ImageView img,final  ImageCallBack callBack){


        new AsyncTask<Void,Void,Bitmap>(){
            @Override
            protected Bitmap doInBackground(Void... params) {


                try {
                    URL url=new URL(picPath);
                    HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);


                    if(connection.getResponseCode()==200){
                        InputStream stream=connection.getInputStream();
                        Bitmap bitmap=BitmapFactory.decodeStream(stream);
                        return  bitmap;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }




                return null;
            }


            @Override
            protected void onPostExecute(Bitmap bitmap) {
                super.onPostExecute(bitmap);


//                if(img.getTag().toString().equals(picPath)){
//                    //显示图片
//                    img.setImageBitmap(bitmap);
//                }
                //调用接口-回传照片
                callBack.setSuccessImage(img,bitmap);






            }
        }.execute();




    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值