Exercice : Créer une application pour les horaires de bus

1. Avant de commencer

Introduction

Dans l'atelier de programmation Persistance des données avec Room, vous avez appris à implémenter une base de données Room dans une application Android. Cet exercice vous permettra de vous familiariser davantage avec l'implémentation des bases de données Room grâce à une série d'étapes indépendantes.

Dans ces exercices guidés, vous allez exploiter les concepts de l'atelier de programmation Persistance des données avec Room pour exécuter l'application Bus Schedule. Cette application utilise des données fournies par une base de données Room pour présenter à l'utilisateur une liste d'arrêts de bus avec les horaires de départ prévus.

Le code de solution est disponible à la fin. Pour profiter pleinement de cette expérience d'apprentissage, essayez de faire le maximum par vous-même (implémentation et dépannage) avant d'examiner le code de solution fourni. C'est lors de cette session pratique que vous apprendrez le plus.

Conditions préalables

Ce dont vous avez besoin

  • Un ordinateur avec un accès à Internet et Android Studio
  • Le code de démarrage de l'application Bus Schedule

Objectifs de l'atelier

Dans ces exercices guidés, vous allez terminer l'application Bus Schedule en implémentant une base de données que vous utiliserez ensuite pour envoyer des données à l'interface utilisateur. Les données sont fournies par un fichier de base de données disponible dans l'annuaire d'éléments du code de démarrage. Vous devrez charger ces données dans une base de données et les rendre accessibles en lecture par l'application.

Une fois terminée, l'application affiche la liste des arrêts de bus et les heures d'arrivée correspondantes. Vous pouvez cliquer sur un élément de la liste pour naviguer vers un écran d'information fournissant des données sur cet arrêt.

L'application terminée affiche des données chargées depuis une base de données Room :

7fbafebbcc3a3eec.png

951621eedfc138fb.png

2. Télécharger le code de démarrage

  1. Dans Android Studio, ouvrez le dossier basic-android-kotlin-compose-training-bus-schedule.
  2. Ouvrez le code de l'application pour les horaires de bus dans Android Studio.
  3. Cliquez sur le bouton Run (Exécuter) 3e12ddc048503bc5.png pour créer et exécuter l'application.

L'application doit afficher les horaires d'un arrêt lorsqu'elle est créée à partir de la branche de code starter.

54aa202086b74e1c.png

3. Ajouter des dépendances

Ajoutez les dépendances suivantes à l'application :

app/build.gradle.kts

implementation("androidx.room:room-ktx:${rootProject.extra["room_version"]}")
implementation("androidx.room:room-runtime:${rootProject.extra["room_version"]}")
ksp("androidx.room:room-compiler:${rootProject.extra["room_version"]}")

Vous devez télécharger la dernière version stable de room depuis la documentation Room et ajouter le bon numéro de version. À l'heure actuelle, la dernière version est la suivante :

build.gradle.kts

set("room_version", "2.5.1")

4. Créer une entité Room

Convertissez la classe de données Bus Schedule actuelle en Room Entity.

L'image suivante présente un aperçu de la table de données finale, avec le schéma et la propriété Entity.

d2ac3220c9a0f3ff.png

5. Créer un objet d'accès aux données

Créez un objet d'accès aux données (DAO) pour accéder à la base de données. Le DAO fournit une méthode pour récupérer tous les éléments de la base de données et une méthode pour récupérer un élément spécifique avec le nom de l'arrêt de bus. Veillez à trier les horaires par heure d'arrivée.

6. Créer une instance de base de données

Créez une base de données Room qui utilise l'Entity et votre DAO. La base de données s'initialise avec les données du fichier assets/database/bus_schedule.db dans le code de démarrage.

7. Mettre à jour le ViewModel

Mettez à jour ViewModel pour récupérer les données du DAO et les fournir à l'UI au lieu de fournir des échantillons de données. Veillez à utiliser les deux méthodes de votre DAO afin de fournir des données pour la liste entière et pour chaque arrêt.

8. Code de solution