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
- Curso Aspectos básicos de Android con Compose a través del codelab Cómo conservar datos con Room
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:
2. Descarga el código de partida
- En Android Studio, abre la carpeta
basic-android-kotlin-compose-training-bus-schedule
. - Abre el código de la app de Bus Schedule en Android Studio.
- Haz clic en el botón Run 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
.
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
.
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.