У меня есть в основном все в одном макете, в котором есть все необходимое для основного фида моего приложения. Все переменные элементы (изображения, видеоролики и т. Д.) Сначала устанавливаются на GONE
и устанавливаются на VISIBLE
, когда это необходимо.Android - RecyclerView с одним макетом, несколько setVisibility
Проблема, возможно, связана с поведением утилизации RecyclerView
, элемент, который предположительно должен быть GONE
, является VISIBLE
в неправильных местах.
Пример:
товара нет 1 не содержит текст
товара нет 2 не содержит Изображение
товара нет 3 не содержит изображение
Я держать прокрутки вниз к пункту не х, затем прокрутите резервную копию и вот что я получаю:
Артикул № 1 не содержит изображения из пункта нет х, иногда пункт нет 3
Пункт № 2 содержит Изображение
товара нет 3 не содержит Изображение
Я использую пользовательский ViewHolder который extends RecyclerView.ViewHolder
, Цель CustomViewHolder
- это объявление и инициализация макета.
ProgressBar progressBar;
View viewDimmer;
RelativeLayout postListWrapper;
...
public ObjectViewHolder(View v) {
super(v);
progressBar = (ProgressBar)v.findViewById(R.id.post_inscroll_progressBar);
viewDimmer = (View)v.findViewById(R.id.post_inscroll_viewDimmer);
postListWrapper = (RelativeLayout)v.findViewById(R.id.post_inscroll_postListWrapper);
}
Пример того, как я загрузить изображение:
Picasso.with(context)
.load(youtubeThumbnailUrl)
.fit()
.centerCrop()
.into(
((ObjectViewHolder) holder).userPostYoutubeImage
);
Я установил каждую видимость GONE
, если URL не получается с сервера
((ObjectViewHolder) holder).userPostImageWrapper.setVisibility(View.GONE);
((ObjectViewHolder) holder).userPostYoutubeImageWrapper.setVisibility(View.GONE);
Но почему-то изображение по-прежнему используется повторно для предыдущих элементов (да, не только для элемента № 1). Иногда изображение также ошибочно ImageView
. Изображение D должно быть в ImageView
D, но оно находится в ImageView
A вместо.
Любое руководство по настройке RecyclerView
хорошо и хорошо?
Если я пропустил что-нибудь, или нужно предоставить больше кода, пожалуйста, сообщите мне: D
Возможно, стоит сказать, почему это важно. Причина в том, что держатели используются повторно. – Knossos
Я только что получил удар. Спасибо Reaz за то, что он сказал мне использовать еще и спасибо @ Knossos за то, что он сказал мне, что держатели снова используются! Таким образом, видимость внутри номера держателя. 3, например, все еще существует, даже если мы перейдем к держателю номер 1? –
@ Knossos Большое спасибо за ваше дополнение. Да, это стоит того. –