RecyclerView: implementa correctamente la eliminación de SnackBar UNDO (Kotlin)

Implementé con éxito el deslizamiento para eliminar un elemento del recyclerView.

Cuando se elimina un elemento, quiero que Top muestre un SnackBar con un button que te permite volver a agregar el artículo si lo borraste involuntariamente.

Elegí almacenar el elemento modificado en una variable y eliminarlo.

Luego, si el usuario presiona el button Deshacer, se volverá a agregar a la position que solía tener.

Así es como lo hice:

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() } } 

El problema es que cuando hago clic en el button DESHACER, el artículo no se vuelve a agregar en el recyclerView . ¿Qué estoy haciendo mal?

Tienes un método de adaptador remove item

 adapter!!.removeItem(position) 

eso es eliminar el elemento de la list del adaptador y notificar a la vista del reciclador.

El método de deshacer, sin embargo, no usa la list de adaptadores tal como lo señala @Submerged, intente crear un método equivalente

 adapter!!.addItem(position) 

ya que actualmente está agregando el elemento a un object de list diferente, y no al que utiliza el adaptador, por lo que no se actualiza nada.

PS llama a notifyItemInserted (para una animation) o notifyDataSetChanged (un cambio de datos por lotes, sin animation), no a ambos

  • Android - Kotlin: el object debe declararse abstracto o implementar miembro abstracto
  • Desadaptación del tipo de Kotlin: ¡tipo inferido es Ver! pero se esperaba TextView
  • Recycler View no se desplaza suavemente
  • Extensión de Kotlin no reconocida en el adaptador
  • Cómo implementar un reciclador de carga perezosa. Adaptador de vista como el reciclador de reino. Ver el adaptador usando kotlin.
  • La vista de reciclador no se infló. Obteniendo el error "Sin adaptador conectado, omitiendo el layout"
  • SortedList IndexOutBoundsException: Inconsistencia detectada. La position del artículo no es válida al eliminar el último elemento
  • Android Recycler View Horizontal Desplácese hasta el último elemento y muestre el primer elemento
  • De la documentation de kotlin no está claro para mí el operador como
  • RecyclerView itemClickListener en Kotlin
  • DiffUtils y multi selección