我正在尝试使用Glide Image Library使用REccycler View在gridview中加载图像。但是,我想在每个图像下面都有一个标题TextView。
我为此设置了自定义布局,并尝试在onBindViewHolder中加载TextView。这有效但滚动时,位置被回收,TextViews标题被更改,使其变得混乱。
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Image image = images.get(position);
// // setup Glide request without the into() method
// DrawableRequestBuilder<String> thumbnailRequest = Glide
// .with(mContext)
// .load(image.getMedium());
// pass the request as a a parameter to the thumbnail request
Glide.with(mContext).load(image.getMedium())
.thumbnail(0.3f)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.thumbnail);
titleText.setText(image.getName());
}
如何修复这位亲爱的开发人员?
答案 0 :(得分:2)
我认为问题是titleText没有存储在ViewHolder中。
将其保存在持有人对象中并使用:
holder.titleText.setText(image.getName());
这会随着持有人的变化而相应地改变TextView。否则,随着持有人的回收,这将是一团糟。
类似的东西:
class MyViewHolder extends RecyclerView.ViewHolder{
TextView titleText;
ImageView thumbnail;
.
.
.
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Image image = images.get(position);
Glide.with(mContext).load(image.getMedium())
.thumbnail(0.3f)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.thumbnail);
holder.titleText.setText(image.getName());
}
}