Android ListView 异步加载图片错位的问题

//预设一张图片
vh.img.setImageResource(R.mipmap.ic_launcher);
//List集合中的图片地址 调取图片地址
final String picUrl = list.get(position).getPicUrl();
if(picUrl!=null){
    //给控件设置一个tag值,tag值具有唯一性
    vh.img.setTag(picUrl);
    //异步获取图片
    MyTask.loadImage(picUrl, vh.img, new ImageCallBack() {
        @Override
        public void setSuccessImage(ImageView img, Bitmap bitmap) {
            if (img.getTag().toString().equals(picUrl)) {

                img.setImageBitmap(bitmap);

            }
        }
    });
}

public class MyTask {
    //异步获取数据
    public static  void loadImage(final String picUrl, final ImageView img,final  ImageCallBack callBack){
        new AsyncTask<Void,Void,Bitmap>(){
            @Override
            protected Bitmap doInBackground(Void... params) {
                try {
                    URL url=new URL(picUrl);
                    HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);
                    if(connection.getResponseCode()==200){
                        InputStream inputStream = connection.getInputStream();
                        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                        return  bitmap;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
            @Override
            protected void onPostExecute(Bitmap bitmap) {
                super.onPostExecute(bitmap);

                callBack.setSuccessImage(img,bitmap);
            }
        }.execute();
    }

}

public interface ImageCallBack {

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





猜你喜欢

转载自blog.csdn.net/qpdb19981023/article/details/78460477
今日推荐