滚动时,TextViews会回放它们的位置和标题,Glide Gallery

时间:2016-07-06 10:52:04

标签: android android-recyclerview android-glide

我正在尝试使用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());

}

如何修复这位亲爱的开发人员?

1 个答案:

答案 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());

}
}