TextViews повторно используют свои позиции и заголовок при прокрутке, Glide Gallery

Я пытаюсь использовать библиотеку изображений Glide для загрузки изображений в виде сетки с использованием REccycler View. Однако я хотел, чтобы под каждым изображением был заголовок TextView.

Я установил для этого собственный макет и попытался загрузить TextView в onBindViewHolder. Это работает, но при прокрутке позиции перерабатываются, а заголовки 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());

}

Как это исправить уважаемые разработчики?


person Oluleye IResþekt Idowu    schedule 06.07.2016    source источник


Ответы (1)


Я думаю, проблема в том, что 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());

}
}
person Kushan    schedule 06.07.2016
comment
пожалуйста, примите ответ, если это решит ваш вопрос :) если нет, скажите мне, чтобы я мог попытаться помочь - person Kushan; 06.07.2016