Почему RecyclerView не правильно обновляет данные?

170
18 июля 2018, 03:40

Столкнулся с такой проблемой, что методы notifyItemRmoved() и notifyItemInserted() не правильно обновляют данные после их вызова. Удаляю item из позиции 1, все нормально, удаляю потом из этой же позиции item который сместился из позиции 2 в 1, удаляется item ниже него, и все в таком духе.

Код метода адаптера, для удаления items за ранее:

public void removeItem(final Item item) {
    int position = this.items.indexOf(item);
    this.items.remove(position);
    super.notifyItemRemoved(position);
}

Вызывал notifyItemRangeChange() после notifyItemRemoved(position); все равно не помогает. В общем recycler напрочь отказывается нормально работать с этими методами, проблему решает только notifyDataSetChanged но им не особо хочу пользоваться.

Из-за чего может быть такая проблема, может кто нибудь знает?

Answer 1

Проблема может возникать если в адаптере hasStableIds возвращает true, а getItemId возвращает не уникальный id а просто текущую позицию элемента.

READ ALSO
Не получается подключить OpenCV для android-SDK в Intellij IDEA, gradle

Не получается подключить OpenCV для android-SDK в Intellij IDEA, gradle

Доброе время сутокУже кучу времени мучаюсь с проблемой подключения OpenCV для android в среду Intellij IDEA

201
Как этот char преобразовать в String

Как этот char преобразовать в String

Если нужно просто преобразовать массив байт в строку то можно попробовать так

176
none of the following function can be called with the arguments supplied

none of the following function can be called with the arguments supplied

Пытаюсь получить в приложении Android широту и долготу, но не получается даже запустить GPSПри попытки скомпилировать проект, получаю следующую...

201
Арабские числа-иероглиы

Арабские числа-иероглиы

Есть приложение под андроид которое выполняет простые радиолюбительские расчетыЗа последнюю неделю поймалось около десятка багов вида

177