Glide 是如何异步加载图片的?

das*_*wen 6 android android-glide

我有一个RecyclerView,每个项目RecyclerView都有ImageView。我正在ImageView使用Glide. 我看到一些博客说Glide可以异步加载图像,但我从下面的代码中看不到这一点。似乎它在onBindViewHolder调用时只加载一张图像。它如何显示异步?

   public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder> {
        private Context mContext;
        private List<GalleryItem> mList;

        public GalleryAdapter(Context mContext, List<GalleryItem> mList) {
            this.mContext = mContext;
            this.mList = mList;
        }

        public static class ViewHolder extends RecyclerView.ViewHolder {
            public ImageView mImageView;
            public ViewHolder(View itemView) {
                super(itemView);
                mImageView = (ImageView) itemView.findViewById(R.id.gallery_item);
            }
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_gallery,
                parent, false);
            ViewHolder vh = new ViewHolder(v);
            return vh;
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            GalleryItem item = mList.get(position);
            holder.mImageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });
            Glide.with(mContext)
                    .load(item.getUrl())
                    .thumbnail(0.5f)
                    .into(holder.mImageView);
        }

        @Override
        public int getItemCount() {
            return mList.size();
        }

        public void addAll(List<GalleryItem> newList) {
            mList.addAll(newList);
        }

        public void clear() {
            mList.clear();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Lau*_*ent 2

根据此处和此处的 glide 文档,您应该使用返回 FutureTarget 的 into() 方法,而不是返回 Target 的方法。此方法采用宽度和高度,而不是 ImageView :“如果您实际上想与后台线程上的解码图像进行交互,您可以使用返回 FutureTarget 的 into() 版本,而不是使用 downloadOnly 。”

  • 我不太明白你的解释。与解释Glide如何异步加载图像有关吗? (2认同)