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.
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.
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.
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 :
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
Il faut ensuite affecter cet adapter à la ListView :
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 ?