Android – добавьте UNDO SnackBar для прокрутки, чтобы удалить

Я успешно выполнил удаление, чтобы удалить действие в моем recyclerView.

Список, который я раздуваю recyclerView, локально хранится и не находится в какой-либо базе данных.

Я попытался сохранить элемент во временную переменную, и если пользователь нажмет кнопку отмены, я бы восстановил ее.

Это мой код:

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] //temporary variable activeSubs.removeAt(position) adapter!!.removeItem(position) 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!!.notifyDataSetChanged() }) } } 

Моя проблема в том, что SnackBar вообще не отображается, но элемент сохраняется во временной переменной и удаляется из списка.

Что я делаю не так?

PS Я просмотрел другие ответы здесь, но они предложили использовать диалог. Мне действительно нужно использовать Snackbar, хотя

    После setAction вы забыли позвонить .show (), чтобы ваш код был таким:

      Snackbar.make(layout, "Subscription Deleted", Snackbar.LENGTH_LONG) .setAction("Undo", { _ -> activeSubs.add(position-1, tmp) adapter!!.notifyDataSetChanged() }) .show() 

    Например, я достиг своей цели, используя этот сценарий. В основной деятельности

      tvTitle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tempValue = etUsername.getText().toString(); etUsername.setText(""); Snackbar.make(view, "Subscription Deleted", Snackbar.LENGTH_LONG) .setAction("Undo", new editTextListener()) .show(); } }); 

    Используемый внутренний класс для слушателя:

     private class editTextListener implements View.OnClickListener { @Override public void onClick(View view) { etUsername.setText(tempValue); } }