====== Android(5) : Gestion des données avec SQLite (Suite) ====== ===== I. Contexte ===== Suite du projet Inventaire : Les articles saisis sont mémorisés dans la base de données articles.db, il faut désormais afficher les articles enregistrés au niveau de l'activité liste_article. {{ :promo_2025:slam:5maquette1.png?200|}} ===== II. Adaptation de la fenêtre ListeArticle ===== Reprendre l'activité correspondante (res/layout/content_liste_articke.xml) Cette fenêtre doit permettre d'afficher les articles enregistrés. Cette activité aura une présentation linéaire (LinearLayout), avec une orientation verticale. Ainsi les éléments seront les uns en dessous des autres. Elle est composée dans un premier temps : * d'un TextView pour le titre. * d'une présentation linéaire (LinearLayout) avec une orientation horizontale. Cette partie permettra l'affichage des entêtes de colonnes de notre liste. Elle comprendra : * 4 TextView, 1 par intitulé (Ref,Désignation, Prix et Qté) * d'une ListView (lvArticles) qui accueillera la liste des articles. * du bouton quitter. Créer les contrôles graphiques et les libellés associés. Penser à nommer les contrôles graphiques. (Propriété id) ===== III. Accès aux articles enregistrés ===== Nous allons compléter la classe ArticleDAO pour accéder aux articles enregistrés. Ajouter la méthode **readLesArticles(),** qui effectuera une requête d'interrogation sur la table Article et retournera tous les articles dans un objet de type **Cursor**. La méthode **rawQuery** permet d'effectuer des requêtes d'interrogation simple, elle retourne un objet de type Cursor. {{ :promo_2025:slam:5rawquery.png?600 |}} Documentation : Nouvelle méthode de la classe ArticleDAO: {{ :promo_2025:slam:5articledaolirelesart.png?600 |}} ===== IV. Rechercher et afficher les articles ===== ==== A. Accéder aux articles mémorisés dans la base de données ==== Reprendre la classe** ListeArticleActivity.java** qui gère les événements se déroulant au niveau de l'activité ListeArticle. Gérer le bouton Quitter comme cela a été fait au niveau de l'ajout d'un article, si cela n'est pas déjà fait. Dans la méthodes initialisations, à la suite de la gestion du bouton Quitter, ajouter l'appel de la méthode afficherLesArticles que nous allons développer. Créer la méthode **afficherLesArticles**. {{ :promo_2025:slam:5afficherlesarticles.png?400 |}} Dans un premier temps, cette méthode accédera à la base, récupérera la liste des articles et affichera le nombre d'articles présents. Tester. Vérifier les affichages de la console **LogCat**, avec Log level **Debug** et le filtre **bdd**. Il faut ensuite afficher les articles dans la ListView. ==== B. Afficher les articles ==== **1. Interface graphique** Nous allons créer un nouveau layout pour définir l'apparence de chaque ligne de la liste des articles : clic droit au niveau du répertoire layout (dans res), choisir New/Layout Resource File. Nommer ce layout **ligne_article**, puis OK. Choisir une présentation __linéaire__, avec une orientation __horizontale__. Y intégrer 4 TextView (tvRef, tvDes, tvPrix et tvQte) qui permettront l'affichage des valeurs des attributs de la table Article. **2. Traitement** Nous allons utiliser un Adapter : il s'agit d'un composant qui effectue un lien entre les données présentes dans un curseur et les contrôles graphiques. Documentation du constructeur : {{ :promo_2025:slam:5documentationconstructeur.png?600 |}} Il faut donc renseigner : * la liste de noms des attributs accessibles grâce à la requête (tableau from), * et la liste des contrôles graphiques qui afficheront les valeurs (tableau to) Puis créer un objet de type **SimpleCursorAdapter** Reprendre la classe ListeArticleActivity.java, et ajouter ces lignes au niveau de la méthode afficherLesArticles, avant la fermeture de la base de données {{ :promo_2025:slam:5complementafficherlesart.png?600 |}} Il faut ensuite affecter cet adapter à la ListView : {{ :promo_2025:slam:5adapterlistview.png?600 |}} Tester. Pour aligner les colonnes, donner des largeurs au textView (width), ajouter une marge à droite (5dp par exemple) et aligner le prix et la quantité à droite (textAlignment viewEnd). **Ajouter l'affichage du nombre d'articles en stock.** ===== V. Questions ===== Répondre aux questions suivantes. Les réponses feront l'objet d'un document publié sur le drive, ce document devra vous identifier dans son entête, les pages seront numérotées sur le modèle //p.x sur y// et contenir un menu intéractif (liens automatiques) : - Comment crée-t-on une base de données SQLite ? - Quand la méthode onCreate(…) de la classe CreateBDArticle est-elle activée ? - Quand la méthode onUpgrade (..) de la classe CreateBDArticle est-elle activée, et que fait-elle ? - Son fonctionnement vous semble-t-il normal ? Si non, que faudrait-il qu'elle fasse ? - À quoi servent les instructions Log.d(…) ? Que signifie le d de Log.d ? Comment faire pour visualiser l'effet de ces instructions ? - Que représente l'objet Cursor ? - À quoi sert l'objet SimpleCursorAdapter ? Comment l'utilise-t-on ?