我有一个RecyclerView
,每个RecyclerView
的项目都有一个ImageView
。 我使用Glide
在该ImageView
中加载图像。 我看到一些博客说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();
}
}
onBindViewHolder()
会被多次调用以加载每个项目,并且对于每个项目,Glide都会在一个线程中下载图像并将其设置到imageView中,甚至它还负责图像缓存。 - Akshay Bhat 'AB'