1. 事前準備
簡介
在「使用 Room 保存資料」程式碼研究室中,您已學會如何在 Android 應用程式實作 Room 資料庫。此練習讓您有機會透過獨立驅動的一系列步驟,進一步熟悉 Room 資料庫實作。
在這套練習題中,您將運用「使用 Room 保存資料」程式碼研究室學到的概念,來完成 Bus Schedule 應用程式。這個應用程式會使用 Room 資料庫提供的資料,向使用者呈現公車停靠站和預定班次的清單。
您可以在練習結尾處找到解決方案程式碼,但為了讓本練習發揮最大效益,建議您先盡可能嘗試實作和疑難排解,再查看我們提供的解決方案程式碼。實際操作才能夠吸收最多的知識。
必要條件
- 瞭解 Android 基本概念並熟悉 Compose 課程中的「使用 Room 保存資料」程式碼研究室
軟硬體需求
- 電腦可以連上網際網路並已安裝 Android Studio
- Bus Schedule 範例程式碼
建構項目
在這套練習題中,您將實作資料庫,然後使用資料庫將資料傳遞至 UI,以完成 Bus Schedule 應用程式。位於範例程式碼素材資源目錄中的資料庫檔案,可為應用程式提供資料。請將此資料載入資料庫,以供應用程式讀取。
應用程式完成之後,畫面上會顯示公車停靠站和對應的抵達時間。您可以按一下清單中的項目,觸發前往提供該停靠站資料的詳細資料畫面。
完成的應用程式會顯示這份從 Room 資料庫載入的資料:
2. 下載範例程式碼
- 在 Android Studio 中開啟
basic-android-kotlin-compose-training-bus-schedule
資料夾。 - 在 Android Studio 中開啟 Bus Schedule 應用程式程式碼。
- 按一下「Run」按鈕 ,即可建構並執行應用程式。
使用 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 實體
將目前的 Bus Schedule 資料類別轉換為 Room Entity
。
下圖為最終資料表範例,包括結構定義和 Entity
屬性。
5. 建立資料存取物件
建立資料存取物件 (DAO) 以存取資料庫。DAO 提供了一種擷取資料庫中所有項目的方法,以及擷取公車停靠站名稱單一項目的方法。請務必依抵達時間對時刻表排序。
6. 建立資料庫執行個體
建立使用 Entity
和 DAO 的 Room 資料庫。資料庫會使用範例程式碼中 assets/database/bus_schedule.db
檔案的資料自行初始化。
7. 更新 ViewModel
更新 ViewModel,以從 DAO 擷取資料並提供給 UI,而不提供範例資料。請務必同時使用這兩種 DAO 方法,針對清單和個別停靠站提供資料。