練習:建構 Bus Schedule 應用程式

1. 事前準備

簡介

「使用 Room 保存資料」程式碼研究室中,您已學會如何在 Android 應用程式實作 Room 資料庫。此練習讓您有機會透過獨立驅動的一系列步驟,進一步熟悉 Room 資料庫實作。

在這套練習題中,您將運用「使用 Room 保存資料」程式碼研究室學到的概念,來完成 Bus Schedule 應用程式。這個應用程式會使用 Room 資料庫提供的資料,向使用者呈現公車停靠站和預定班次的清單。

您可以在練習結尾處找到解決方案程式碼,但為了讓本練習發揮最大效益,建議您先盡可能嘗試實作和疑難排解,再查看我們提供的解決方案程式碼。實際操作才能夠吸收最多的知識。

必要條件

軟硬體需求

  • 電腦可以連上網際網路並已安裝 Android Studio
  • Bus Schedule 範例程式碼

建構項目

在這套練習題中,您將實作資料庫,然後使用資料庫將資料傳遞至 UI,以完成 Bus Schedule 應用程式。位於範例程式碼素材資源目錄中的資料庫檔案,可為應用程式提供資料。請將此資料載入資料庫,以供應用程式讀取。

應用程式完成之後,畫面上會顯示公車停靠站和對應的抵達時間。您可以按一下清單中的項目,觸發前往提供該停靠站資料的詳細資料畫面。

完成的應用程式會顯示這份從 Room 資料庫載入的資料:

7fbafebbcc3a3eec.png

951621eedfc138fb.png

2. 下載範例程式碼

  1. 在 Android Studio 中開啟 basic-android-kotlin-compose-training-bus-schedule 資料夾。
  2. 在 Android Studio 中開啟 Bus Schedule 應用程式程式碼。
  3. 按一下「Run」按鈕 3e12ddc048503bc5.png 即可建構並執行應用程式。

starter 分支版本程式碼建構時,應用程式應會顯示一個站點的停靠時間表。

54aa202086b74e1c.png

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 實體

將目前的 Bus Schedule 資料類別轉換為 Room Entity

下圖為最終資料表的範例,包括結構定義和 Entity 屬性。

d2ac3220c9a0f3ff.png

5. 建立資料存取物件

建立資料存取物件 (DAO) 以存取資料庫。DAO 提供了一種擷取資料庫中所有項目的方法,以及擷取公車停靠站名稱單一項目的方法。請務必依抵達時間對時刻表排序。

6. 建立資料庫執行個體

建立使用 Entity 和 DAO 的 Room 資料庫。資料庫會使用範例程式碼中 assets/database/bus_schedule.db 檔案的資料自行初始化。

7. 更新 ViewModel

更新 ViewModel,以從 DAO 擷取資料並提供給 UI,而不提供範例資料。請務必同時使用這兩種 DAO 方法,針對清單和個別停靠站提供資料。

8. 解決方案程式碼