У меня проблема с моим recyclerview. По сути, его адаптер представляет собой отсортированный список, и при соблюдении определенных критериев слева от имени элемента появляется цветная галочка.
Моя проблема в том, что эта галочка иногда случайным образом появляется на предметах, на которых она не должна появляться. Обычно, когда я прокручиваю список вниз, затем снова вверх.
RecyclerView с правильными галочками
После прокрутки вниз и назад второй элемент получает галочку, хотя он не должен
Это onBindViewHolder адаптера:
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
[...]
SharedPreferences prefcorsi = contesto.getSharedPreferences(Costanti.ISCRIZIONECORSI,Context.MODE_PRIVATE);
SharedPreferences prefgruppi = contesto.getSharedPreferences(Costanti.ISCRIZIONEGRUPPI,Context.MODE_PRIVATE);
if (evento.getIdgruppo() > 0 && prefgruppi.getInt(Integer.toString(evento.getIdgruppo()),0) > 0) {
holder.checkiscritto.setVisibility(View.VISIBLE);
Log.w("Iscritto gruppo adapter",evento.getTitolo());
} else if (prefcorsi.getInt(Integer.toString(evento.getId()),0) > 0 && evento.getStatoiscrizione() > 0) {
holder.checkiscritto.setVisibility(View.VISIBLE);
Log.w("Iscritto da adapter",evento.getTitolo());
}
Я на 100% уверен, что это не проблема где-то еще, так как 1) Log.w не показывает неисправный элемент, рядом с ним появляется галочка. 2) Общие предпочтения и метод получения объекта возвращают правильные значения.
Может быть, это ошибка или слишком много элементов для обработки?
Ваш зритель не использует параметр position, что кажется подозрительным ...
@MikeM. спасибо, правильный ответ.
Вам необходимо явно установить видимость
GONE/INVISIBLE, когда оба условияifложны; то есть в финальномelse.