我正在嘗試創建一個應用程式,用戶可以在其中列出要達到他們創建的步驟目標串列,然后選擇其中一個來激活和遵循。資料庫在我只使用目標 ID、名稱和步驟時作業,但現在我意識到我需要插入另一列來定義目標何時處于活動狀態,所以我試圖插入它,但是我不知道應該如何處理布林值,尤其是在存盤庫和 viewModel 中。我會很感激任何幫助。提前致謝
這是我的代碼
interface Dao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(goal: Goal)
@Update
suspend fun updateGoal(goal: Goal)
@Query("SELECT * FROM user_goal_table order by goalId")
fun getAll(): LiveData<List<Goal>>
@Query("SELECT * FROM user_goal_table WHERE goalId = :key")
suspend fun getGoal(key: Int): Goal
@Delete
suspend fun delete(goal: Goal)
@Query("SELECT * FROM user_goal_table WHERE goal_is_active = 1 order by goalId")
suspend fun makeGoalActive(key: Int): Goal
class Repository (private val dao : Dao){
val allGoals: LiveData<List<Goal>> = Dao.getAll()
suspend fun insert(goal: Goal){
dao.insert(goal)
}
suspend fun update(goal: Goal){
dao.update(goal)
}
suspend fun delete(goal: Goal){
dao.delete(goal)
}
suspend fun active(goal: Goal, int: Int){
dao.makeGoalActive(int)
}
class ViewModel (application: Application) : AndroidViewModel(application) {
val allGoals: LiveData<List<Goal>>
private val repository: Repository
init{
val dao = GoalDatabase.getInstance(application).getGoalDao()
repo = Repository(dao)
allGoals = repository.allGoals
}
fun insert(goal: Goal) = viewModelScope.launch(Dispatchers.IO){
repository.insert(goal)
}
fun update(goal: Goal) = viewModelScope.launch(Dispatchers.IO){
repository.update(goal)
}
fun delete(goal: Goal) = viewModelScope.launch(Dispatchers.IO){
repository.delete(goal)
}
uj5u.com熱心網友回復:
只需isActive: Boolean
向您的Goal
類添加一個新屬性,然后@Update
在 Room 中使用注釋(您已經在updateGoal(goal: Goal)
Dao 的方法中實作)或UPDATE
在 SQLite 中命令自身更新您想要更改其isActive
狀態的行。要使用 SQLite,請執行以下操作:
@Query("UPDATE user_goal_table SET isActive = 1 WHERE goalId = :goalId")
suspend fun makeGoalActive(goalId: Int)
對于布爾屬性,在 SQLite 命令中使用1
fortrue
和0
for 。false
在 Repository 中,這個方法就足夠了:
suspend fun active(goalId: Int) {
dao.makeGoalActive(int)
}
在 ViewModel 中:
fun insert(goal: Goal) = viewModelScope.launch {
repository.insert(goal)
}
順便說一句,您不需要確定IO
Room 方法的調度程式,Room 使用自己的調度程式來運行查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/441436.html