Solía usar la biblioteca SwipeToDismiss , pero ahora estoy tratando de migrar a RecyclerView y las cosas no son tan obvias, ¿conoce algún reemplazo para esta biblioteca? ¿Alguna idea de cómo implementarlo desde cero?
android
android-recyclerview
Viktor Yakunin
fuente
fuente
Respuestas:
A partir de la v22.2.0, el equipo de soporte de Android ha incluido una
ItemTouchHelper
clase que hace que deslizar para descartar y arrastrar y soltar sea bastante simple. Es posible que esto no sea tan completo como algunas de las bibliotecas que existen, pero proviene directamente del equipo de Android.Actualice su build.gradle para importar v22.2. + De la biblioteca RecyclerView
Cree una instancia de ItemTouchHelper con un SimpleCallback apropiado
** Tenga en cuenta que SimpleCallback toma las direcciones en las que desea habilitar la función de arrastrar y soltar y las direcciones en las que desea habilitar el deslizamiento.
Adjuntar a su RecyclerView
fuente
viewHolder
.Aquí en Code, si el usuario desliza el dedo hacia la izquierda, se muestra AlertDialog y si el usuario selecciona REMOVE, el elemento se elimina de la base de datos y la vista de reciclaje se actualiza y si el usuario selecciona CANCELAR, la vista de reciclaje es como está.
fuente
if (direction == ItemTouchHelper.LEFT) // if swipe left
ya queItemTouchHelper.SimpleCallback
se limita solo a esa dirección de deslizamiento. Si desea deslizar hacia la izquierda y hacia la derecha,ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT)
deberá verificar la dirección.AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // stuff to put the item back } });
adapter.notifyItemChanged(position);
que devolví el artículo deslizado, en lugar denotifyItemRemoved
, lo cual es más lógico en mi humilde opinión.tal vez podrías probar esta biblioteca:
https://github.com/daimajia/AndroidSwipeLayout
Actualización: acabo de encontrar otra buena biblioteca que puede usar con RecyclerView:
https://github.com/hudomju/android-swipe-to-dismiss-undo
fuente
Esta biblioteca puede ser útil . Puede implementar
undo
enOnDissmiss
usosupertoast
fuente
OnTouchListener
inspiración para estoEscribí la biblioteca SwipeToDeleteRV que admite la función de deslizar para eliminar y deshacer en las vistas de reciclador. Se basa en ItemTouchHelper y es muy fácil de usar.
Espero que pueda ser útil para alguien que enfrenta los mismos problemas.
Como ejemplo, puede definir su vista de reciclador en un diseño XML como normal, más algunos atributos opcionales:
Todos los atributos stdrv son opcionales. Si no los especifica, se usarán los predeterminados.
Luego cree un adaptador que subclases STDAdapter, asegúrese de llamar al constructor de superclase. Algo como esto:
}
A continuación, asegúrese de realizar una llamada al
setupSwipeToDelete
método para configurar la función de deslizar para eliminar.swipe_directions
es la dirección en la que permite que se pasen los elementos.Ejemplo:
¡Eso es! Para configuraciones más avanzadas (es decir, establecer diferentes mensajes de eliminación para diferentes elementos, eliminar elementos temporal y permanentemente, ...), consulte la página Léame del proyecto.
fuente