He pensado en la implementación de esta característica también, pero aún no lo he hecho. Por lo tanto, lo único que puedo proporcionar son algunas ideas sobre cómo I abordaría ese problema. Si eventualmente escribí algún código, lo publicaré aquí.
- La clase principal necesaria es un Adaptador personalizado que amplíe un
ListAdapter
(ArrayAdapter, SimpleCursorAdapter etc.).
- El adaptador aplica View.OnTouchListener a todas sus vistas.
- Cuando el oyente detecta un desplazamiento horizontal
dx
, llama al concernedView.offsetLeftAndRight(dx)
(lo que hará que la vista se pueda arrastrar). Por supuesto, el adaptador tiene que guardar el desplazamiento horizontal actual para la vista. Si el usuario estaba arrastrando una vista y saca su dedo de la pantalla, el touchListener detectará esto también y comenzará una animación de deslizamiento hacia atrás. Usando el desplazamiento actual también podemos calcular un valor alfa, por lo que la vista se desvanecerá cuando se acerque a los bordes de la pantalla.
- Si el usuario finaliza una entrada de la lista, se vuelve un poco complicado y todavía no estoy seguro de cómo implementaría la siguiente acción: El contenido de la lista debe actualizarse (o el adaptador debe ignorar el entradas rechazadas) y los puntos de vista que estaban por debajo del que se descartó deben desplazarse hacia arriba para llenar el vacío. Creo que podría funcionar dejar que ListView cargue el nuevo contenido, pero eso llenaría el espacio de manera instantánea. Para evitar eso, comenzaría una animación que permite que todas las vistas afectadas pasen de su posición anterior (donde aún teníamos el espacio) a su posición actual (donde se llena el espacio).
Estos son solo algunos de mis pensamientos sobre el tema que podrían ayudar a algunas personas a comenzar a trabajar en el problema. Como dije, probablemente voy a implementar eso alguna vez en el futuro y, por supuesto, publicaré el código aquí.
Agradecería cualquier comentario en los comentarios, pero no quiero explicar exhaustivamente cada aspecto de mi idea, eso me llevaría demasiado tiempo;)
Bueno, eso es un comienzo. Intentaré crear algo basado en esto y actualizaré aquí si tengo éxito. – iamronak
Antes de quitar la vista, anima su altura a 0. Eso hará que la lista colapse muy bien. Entonces, una notificación no será un chasquido discordante. – Hounshell