1. 开始之前
介绍
在 使用 Room 持久化数据 代码实验室中,您学习了如何在 Android 应用中实现 Room 数据库。本练习提供了一个机会,让您通过独立驱动的步骤,更加熟悉 Room 数据库的实现。
在本实践集中,您将运用从 使用 Room 持久化数据 代码实验室中学习到的概念,完成公交车时刻表应用。该应用使用 Room 数据库提供的数据,向用户展示公交车站列表和预定发车时间。
解决方案代码在最后提供。为了充分利用这种学习体验,请在查看提供的解决方案代码之前,尽可能地尝试自己实现和解决问题。在实践操作中,您才能学到最多。
先决条件
- 通过 使用 Room 持久化数据 代码实验室完成的 Android Compose 基础课程。
您需要什么
- 一台连接互联网的计算机和 Android Studio。
- 公交车时刻表入门代码。
您将构建的内容
在本实践集中,您将通过实现数据库,然后使用数据库将数据传递给 UI,来完成公交车时刻表应用。入门代码中的资产目录中的数据库文件提供应用所需的数据。您将这些数据加载到数据库中,并使应用能够读取这些数据。
完成应用后,它会显示一个公交车站列表及其对应的到达时间。您可以点击列表中的项目,触发导航到详细信息屏幕,该屏幕会提供该车站的数据。
完成的应用将显示这些数据,这些数据从 Room 数据库加载。
2. 下载入门代码
- 在 Android Studio 中,打开
basic-android-kotlin-compose-training-bus-schedule
文件夹。 - 在 Android Studio 中打开公交车时刻表应用代码。
- 点击运行按钮 来构建和运行应用。
预计该应用在从 starter
分支代码构建时会显示一个包含一个站点的时刻表。
3. 添加依赖项
将以下依赖项添加到应用中。
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"]}")
您应该从 Room 文档 获取最新版本的 room
并添加正确的版本号。目前最新版本是
build.gradle.kts
set("room_version", "2.5.1")
4. 创建一个 Room 实体
将当前公交车时刻表数据类转换为 Room 实体
。
下图显示了最终数据表的一个示例,包括架构和 实体
属性。
5. 创建数据访问对象
创建一个数据访问对象 (DAO) 来访问数据库。DAO 提供一个方法来检索数据库中的所有项目,以及一个方法来检索具有公交车站名称的单个项目。确保按到达时间排序时刻表。
6. 创建一个数据库实例
创建一个使用 实体
和您的 DAO 的 Room 数据库。数据库使用入门代码中的 assets/database/bus_schedule.db
文件中的数据进行初始化。
7. 更新 ViewModel
更新 ViewModel 以从 DAO 检索数据并将其提供给 UI,而不是提供示例数据。确保利用您的两个 DAO 方法来提供列表和单个站点的數據。