Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

35 Commits

Folders and files

Repository files navigation

Projet Android – To-Do List ANDROID

Contexte du projet

Ce dépôt contient une application de gestion de tâches (To-Do List) robuste développée pour Android. L'objectif de ce TP était de créer une interface moderne et intuitive permettant non seulement de lister des rappels, mais aussi de gérer leur cycle de vie complet, leur importance et leur échéance, tout en assurant la persistance des données.

L'application se distingue par son système de priorité à 6 niveaux et son interface dynamique qui s'adapte visuellement à l'état de chaque tâche (en cours, terminée ou en retard).


Fonctionnalités principales

Gestion des tâches (CRUD)

  • Création : Ajout de tâches avec titre, description, date d'échéance et niveau de priorité.
  • Lecture : Affichage dans une ListView optimisée via un TaskAdapter personnalisé.
  • Mise à jour : Modification possible de tous les champs d'une tâche existante via un appui long.
  • Suppression : Retrait définitif d'une tâche de la base de données.

Organisation et Filtres

  • Recherche en temps réel : Barre de recherche (SearchView) filtrant les tâches par leur titre au fur et à mesure de la saisie.
  • Filtrage par état : Boutons de sélection rapide pour afficher toutes les tâches, uniquement celles "En cours" ou uniquement les "Terminées".
  • Système de Tri avancé : Menu permettant de trier la liste par ordre alphabétique (A-Z / Z-A), par date d'échéance (chronologique) ou par niveau de priorité.

Système de Priorités (6 niveaux)

Chaque tâche se voit attribuer une importance spécifique avec un code visuel dédié :

  1. Optionnel (Gris)
  2. Basse (Bleu)
  3. Moyenne (Vert)
  4. Haute (Orange)
  5. Très Haute (Rouge)
  6. Obligatoire (Rouge sombre + Icône 🔥)

Architecture et Logique

  • Modèle de données (Task.kt) :
    • Utilisation d'une Data Class représentant l'entité SQL avec les champs id, title, description, isCompleted, deadline et priority.
  • Persistance des données (Room Database) :
    • AppDatabase : Singleton gérant l'instance de la base de données SQLite.
    • TaskDao : Interface définissant les requêtes SQL (Insert, Update, Delete, et requêtes de sélection filtrées).
    • TaskManager : Classe intermédiaire (Repository) qui fait le lien entre l'interface utilisateur et la base de données pour isoler la logique métier.
  • Interface Utilisateur (UI) & Adaptateur :
    • TaskAdapter : Logique de rendu dynamique. Il calcule en temps réel la couleur de fond du MaterialCardView et le style du texte en fonction de l'urgence (retard) ou de l'état (terminé).
    • Dialogues Material : Utilisation de MaterialAlertDialogBuilder pour une saisie de données ergonomique et de MaterialDatePicker pour une sélection de date native.

Points techniques et choix de conception

  • Logique visuelle conditionnelle :
    • Les tâches terminées apparaissent en vert pastel avec le texte barré.
    • Les tâches en retard (échéance < date actuelle) s'affichent automatiquement en rouge pour alerter l'utilisateur.
  • Optimisation de la recherche : Filtrage combiné (Recherche + Filtre d'état + Tri) pour garantir que l'utilisateur trouve toujours l'information voulue, même avec une liste conséquente.
  • Toggle de statut : Le clic sur une tâche ou sa case à cocher inverse son état instantanément en base de données, offrant une interaction fluide.
  • Material Design : Utilisation de composants MaterialCardView, FloatingActionButton et TextInputLayout pour une esthétique conforme aux standards modernes d'Android.

Technologies utilisées

  • Kotlin : Langage de programmation principal.
  • Room Persistence Library : Pour la gestion de la base de données SQLite locale.
  • Android Jetpack : ViewModel, Material Components.
  • XML Layouts : Conception d'interfaces complexes et adaptatives.

Conclusion

Ce projet illustre une maîtrise complète du développement d'une application Android orientée données et comprendre les base du dévelopement d'application mobile :

  • Gestion d'une base de données locale avec Room.
  • Création d'un Adapter personnalisé gérant des états visuels complexes.
  • Implémentation d'une logique de filtrage et de tri multicritères.
  • Utilisation des Composants Material Design pour une expérience utilisateur (UX) soignée.

L'application est ainsi prête pour une utilisation quotidienne, offrant un outil de productivité fiable et visuellement clair.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages