Práctica: Compila la app de Bus Schedule

1. Antes de comenzar

Introducción

En el codelab Cómo conservar datos con Room, aprendiste a implementar una base de datos de Room en una app para Android. Con este ejercicio, podrás familiarizarte con la implementación de las bases de datos de Room mediante un conjunto de pasos controlados de forma independiente.

En esta práctica guiada, tomarás los conceptos que aprendiste en el codelab Cómo conservar datos con Room para completar la app de Bus Schedule. Esta app presenta al usuario una lista de paradas de autobús y salidas programadas mediante los datos proporcionados desde una base de datos de Room.

El código de la solución está disponible al final. Para aprovechar al máximo esta experiencia de aprendizaje, intenta implementar y solucionar problemas tanto como puedas antes de ver el código de solución que se brinda. Es durante este período práctico que aprenderás más.

Requisitos previos

Requisitos

  • Una computadora con acceso a Internet y Android Studio instalado
  • El código de partida de Bus Schedule

Qué compilarás

En esta práctica, completarás la app de Bus Schedule. Para ello, implementarás una base de datos y, luego, publicarás datos en la IU con la base de datos. Un archivo de base de datos en el directorio de recursos que se encuentra en el código de partida proporciona datos para la app. Tú cargas estos datos en una base de datos y los pones a disposición de la app para que los lea.

Después de que completes la app, aparecerá una lista de paradas de autobús y las horas de llegada correspondientes. Puedes hacer clic en un elemento de la lista para activar la navegación a una pantalla de detalles que proporciona datos de esa parada.

La app completa muestra estos datos, cargados desde una base de datos de Room:

7fbafebbcc3a3eec.png

951621eedfc138fb.png

2. Descarga el código de partida

  1. En Android Studio, abre la carpeta basic-android-kotlin-compose-training-bus-schedule.
  2. Abre el código de la app de Bus Schedule en Android Studio.
  3. Haz clic en el botón Run 3e12ddc048503bc5.png para compilar y ejecutar la app.

Se espera que la app muestre un programa con una parada cuando se compila a partir del código de la rama starter.

54aa202086b74e1c.png

3. Agrega dependencias

Agrega las siguientes dependencias a la app:

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"]}")

Debes obtener la versión estable más reciente de room en la documentación de Room y agregar el número de versión correcto. En este momento, la última versión es:

build.gradle.kts

set("room_version", "2.5.1")

4. Crea una entidad de Room

Convierte la clase de datos de Bus Schedule actual en Room Entity.

En la siguiente imagen, se muestra un ejemplo de cómo se ve la tabla de datos final, incluidos el esquema y la propiedad Entity.

d2ac3220c9a0f3ff.png

5. Crea un objeto de acceso a datos

Crea un objeto de acceso a datos (DAO) para acceder a la base de datos. El DAO proporciona un método para recuperar todos los elementos de la base de datos y un método para recuperar un solo elemento con el nombre de la parada de autobús. Asegúrate de ordenar el horario por hora de llegada.

6. Crea una instancia de base de datos

Crea una base de datos de Room que use Entity y tu DAO. La base de datos se inicializa con datos del archivo assets/database/bus_schedule.db en el código de partida.

7. Actualiza el ViewModel

Actualiza el ViewModel para recuperar datos del DAO y proporcionarlos a la IU, en lugar de brindar datos de muestra. Asegúrate de aprovechar ambos métodos DAO para proporcionar datos para la lista y las paradas individuales.

8. Código de la solución