Desliza para borrar / editar Kotlin. Para criarmos a ação de swipe to delete … | Autor: Gabriel Novakowski Nunes | Diciembre de 2021
Para criarmos a ação de swipe to delete na Vista de reciclador, crisamos criar uma classe SwipeToActionCallback, que irá estender de ItemTouchHelper.SimpleCallback.Ou seja, iremos implementando um comportamento para una acción de deslizamiento para otro lado.
Repare que temos o controle de para qual lado foi feito o swipe, podemos deploymentar isso da maneira que necessitarmos.
Após criarmos o callback, precisamos junta-lo a nossa Vista de reciclador. Para isso, criaremos uma variável que inicializa o ItemTouchHelper e passaremos nosso callback como parámetros. Depois de cria-lo, vamos informar ao ItemTouchHelper igual Vista de reciclador Elwa atual.
Sin adaptaciónr, también precisamos criar a função de delete que será chamada no llamar de vuelta. Nesta função de delete, iremos salvar o item excluido em memória para usarmos latermente, caso o usuário tenha excluído por engano.
Agora, nosso swipe de delete já está funcionando! Iremos adicionar um background e um ícone, para uma UX melhor, eimplementaremos o botão silenciador.
Un variável dx significa una cuantidade de deslocamento horizo ntal hecho pela ação do usuário, ou seja, o quanto o usuário arrastou a linha. Então, dx> 0 significa que o usuário fez o swipe para a direita, dx <0 para a esquerda.
Como vamos a colocar um ícone para cada lado, devemos setar um ícone para cada condición. No hay meu caso, coloquei o ícone de delete para um lado e edit para o outro.
icon = ContextCompat.getDrawable(maintenanceOrdersAdapter.getContext(),
R.drawable.ic_delete_white_24dp)!!
val iconLeft = margin;
val iconRight = margin + icon.intrinsicWidth;
Colocamos os limites do ícone.
icon.setBounds(iconLeft, iconTop, iconRight, iconBottom);
Aqui, colocamos a cor do fundo ao arrastar.
background.color = ContextCompat.getColor(maintenanceOrdersAdapter.getContext(), R.color.swipe_red)
Devemos colocar los límites del fondo.
background.setBounds( itemView.left, itemView.top, itemView.left+ dX.toInt() + backgroundCornerOffset, itemView.bottom
Ao final, devemos chamar o background.draw (c) e icon.draw (c), onde desenharemos na tela todas como configurações que fizemos até agora. Esta es una clase completa:
Iremos implementador o botão desfazer (deshacer) com uma snack bar. Para isso, precisamos de um layout pai, onde snack bar será mostrada. Nesse caso, o coordinator_layout_main é o Layout raiz da MainActivity.
Também colocamos a acción para o snack bar, que será chamada quando o usuário clicar em «desfazer».
Un placer Deshacer eliminación somente adiciona a lista novamente aquele item que salvamos em memória ao chamar a função Eliminar elemento.
O resultado final fica assim:
Agora, ao deslizar um item da list temos um feedback muito melhor para o usuário, além de uma feature muito útil em nosso app.