En muchas aplicaciones de notas o tareas, es común tener una lista de elementos archivados. Sin embargo, puede surgir la necesidad de recuperar alguno de estos elementos y moverlo de nuevo a la lista principal. Pero, ¿cómo se logra esto? En este artículo, exploraremos cómo modificar el estado de una nota archivada en una aplicación, cambiando su estado a no archivado.
¿Cómo agregar la funcionalidad de desarchivar?
Para empezar a desarchivar una nota, primero debemos identificar el diseño de interfaz donde se encuentra el botón responsable de esta acción. Imaginemos que nuestro elemento archivado tiene dos botones, uno de los cuales cambiará el estado del todo para que deje de estar archivado. El siguiente paso es agregar esta funcionalidad y para ello necesitaremos:
Acceder al view model de nuestra aplicación.
Crear o modificar una función que cambie el estado de la nota.
¿Cómo implementar la función unarchiveToDo?
Dentro del view model, la función unarchiveToDo juega un papel esencial. Su tarea es modificar el estado de la nota archivada, regresándola a la lista principal. Vamos a diseccionar su implementación paso a paso:
Verificar la existencia de un índice: Necesitamos chequear si el elemento que queremos desarchivar posee un índice dentro de nuestra colección de todos.
val index = todos.indexOfFirst{ it.id== todoId }if(index ==-1)return
Modificar el estado del todo: Si el índice es válido, usamos este para acceder al elemento en cuestión y cambiar su propiedad isArchived a false.
todos[index].isArchived=false
Guardar los cambios: Realizamos un saveData para que los cambios se mantengan reflejados al usuario.
saveData()
¿Cómo conectamos el botón con la funcionalidad?
Una vez que hemos definido la lógica para cambiar el estado del todo, el siguiente paso crucial es conectar esto con la interfaz de usuario, específicamente el botón que ejecutará esta acción.
Ubicar y modificar el botón más que se encuentra en el ítem del todo archivado.
Llamar la función unarchiveToDo pasándole como argumento el identificador de la nota o tarea.
Ejemplo de cómo puede ser la llamada desde el archivo de diseño:
Finalmente, después de haber implementado y conectado nuestra función, es vital probar la aplicación para verificar que funciona como se espera:
Ejecuta la aplicación.
Navega a la lista de archivados.
Desarchiva un elemento y revisa si reaparece en la lista principal.
Con estos pasos, podrás gestionar tus notas o tareas archivadas de manera eficiente, asegurando que todos los elementos sean fácilmente accesibles cuando los necesites. Proceder a implementar este tipo de funcionalidades no solo mejora la experiencia del usuario, sino que también fortalece las habilidades de programación y lógica de quienes desarrollan la aplicación. ¡Adelante y sigue explorando más funciones y posibilidades!
Ya que estamos repitiendo código al hacer dos métodos que solo cambian el valor de un booleano, ¿no seria mas fácil usar el .toggle() o podría generar algún error?
Si vemos en la parte de acá, nuestro todo sheet recordando que tenemos nuestro todo sheet, es una vista parcial, ¿no? Vamos a borrar esto para ver la vista previa. Tenemos nuestro todo sheet recordando es esto. Entonces, vamos a crear uno de estos y dentro colocar la vista que tenemos para adicionar. Así que creamos un todo sheet. Tenemos acá nuestro todo sheet, Ciertos parámetros que nos permite, nos nos obliga a crear es is show, el parámetro show, y vamos a enviar el parámetro que tenemos acá, que es el show it sheet. Luego, otro parámetro que nos pide es el contenido que vayamos a agregar, pero en este caso no lo vamos a, no le damos importancia a este contenido, simplemente, creamos nuestro is, is show, nuestro showsheet. Acá dentro, lo que vamos a colocar inicialmente va a ser de esta manera, vamos a cambiar un poquito el código para que no nos marque ese error. Ahora sí, tenemos este todo shit. Dentro de este todo sheet podemos colocar las vistas que queramos y se va a mostrar de manera flotante, porque nuestra vista ya básicamente dice que va a ser una vista parcial de la pantalla.