Я реализую множественный выбор в GridManager с помощью RecyclerView.
Вот мой код внутри адаптера
imgStamps.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//First setting up isSelected() or not
if (imageList.get(getAdapterPosition()).isSelected()) {
imageList.get(getAdapterPosition()).setSelected(false);
} else {
imageList.get(getAdapterPosition()).setSelected(true);
}
//Setting blur image on Imageview onLongclick and resting on again press.
if (imageList.get(getAdapterPosition()).isSelected()) {
mCount++;
imgBlurr.setVisibility(View.VISIBLE);
} else {
mCount--;
imgBlurr.setVisibility(View.GONE);
}
mCommunicator.clicked(mCount, getAdapterPosition());
return true;
}
});
Приведенный выше код находится внутри ViewHolder, а не onBindViewHolder.
Если я выбираю первое изображение и прокручиваю его вниз, а затем вверх, вид сбрасывается.
Можно ли указать на ошибку или поведение?
RecyclerView повторно использует ваш макет. Выложите свою логику на метод onBindViewHolder.
Для получения дополнительной информации изучите этот вопрос Как правильно выделить выбранный элемент в RecyclerView?
RecyclerView будет повторно использовать представление вашего элемента при прокрутке. Чтобы управлять множественным выбором, у вас должен быть массив выбранной позиции (или выбранной модели). И onBindViewHolder, проверьте позицию в этом массиве, чтобы проверить выбранный элемент или нет. Для получения более подробной информации о реализации, пожалуйста, обратитесь к: Множественный выбор в RecyclerView?
Правильно ли вы настраиваете видимость и в
onBindViewHolder()? Если нет, то это твоя проблема.