RecyclerView – правильно внедрить удаление UNDO SnackBar (Kotlin)

Я успешно выполнил салфетки для удаления элемента из recyclerView.

Когда элемент удален, я хочу, чтобы в верхней части появился SnackBar с кнопкой, которая позволяет вам добавить элемент назад, если вы удалили непреднамеренно.

Я решил сохранить переменную в переменной и удалить ее.

Затем, если пользователь нажмет кнопку отмены, он будет добавлен обратно в прежнее положение.

Вот как я это сделал:

override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { val position = viewHolder.adapterPosition //get position which is swipe if (direction == ItemTouchHelper.LEFT) { //if swipe left val tmp = activeSubs[position] //here I store the temporary Item activeSubs.removeAt(position) adapter!!.removeItem(position) //TODO: translate val layout = find<View>(R.id.active_subs_recycler) Snackbar.make(layout, "Subscription Deleted", Snackbar.LENGTH_LONG) .setAction("Undo", { _ -> activeSubs.add(position-1, tmp) adapter!!.notifyItemInserted(position-1) adapter!!.notifyDataSetChanged() }).show() } } 

Проблема в том, что когда я нажимаю кнопку UNDO, элемент не добавляется обратно в recyclerView . Что я делаю не так?

У вас есть способ адаптера remove item

 adapter!!.removeItem(position) 

который удаляет элемент из списка адаптера и уведомляет о просмотре recycler.

Однако метод отмены не использует список адаптеров, как указано @Submerged, попробуйте создать эквивалентный метод

 adapter!!.addItem(position) 

поскольку в настоящее время вы добавляете элемент в другой объект списка, а не тот, который использует адаптер, поэтому ничего не обновляется.

PS вызывать либо notifyItemInserted (для анимации), либо notifyDataSetChanged (пакетное изменение данных, без анимации), не оба

Intereting Posts
Странная ошибка «Val не может быть переназначена» при установке свойства в Kotlin объекта Java Почему можно опустить значения по умолчанию в переопределенных функциях-членах подтипов? Почему в Коллекции Котлин нет? Инкапсулирование получения имени метода в вспомогательном методе Проверьте, является ли класс допустимым значением для KParameter Задержка загрузки объектов Kotlin Использование функции Kotlin как типа Java SAM Запуск интерфейса в Kotlin для Android setSmallIcon (значок: значок) и NotificationCompat Что из ключевого слова в котлин Kotlin Vertx Тип Несоответствие найдено Future <Unit> ожидаемый обработчик <AsyncResult <Void >> Может ли кто-нибудь здесь подробно описать структуру проекта приложения «Котлин / Родник»? Кроме того, особенности работы различных модулей Retrofit2 Добавить дополнительную строку в объект Body Функция Kotlin stub / placeholder для невыполненного кода Правильная структура многомодульных модулей Gradle с IntelliJ IDEA