【发布时间】:2019-09-06 07:03:12
【问题描述】:
Room , Mvvm Created , Kotlin - Add , Delete 正在工作 但是当我运行更新时没有任何变化
我已经调试了应用程序,dao,repo 和 viewModel 类正在显示更改,但没有任何更改反映在我的 recyclerView 上,或者当我销毁并再次打开我的应用程序时它没有更改
我的模型/实体类:
data class IceBreakerModel(val question:String,
val date:String,
val option1:String,
val option2:String,
val option3:String){
@PrimaryKey(autoGenerate = true)
var id: Int = 0
}
道:-
interface IcebreakerDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertQuestion(question:IceBreakerModel)
@Query("DELETE FROM ice_breaker_questions WHERE id=:ID")
fun deleteQuestion(ID:Int)
@Query("SELECT * FROM ice_breaker_questions")
fun getAllIcebreakerQuestions():LiveData<List<IceBreakerModel>>
@Update(onConflict = OnConflictStrategy.REPLACE)
fun updateIcebreakerQuestion(question:IceBreakerModel)
// @Query("UPDATE ice_breaker_questions SET question =:newQuestion ,date=:newDate,option1=:newOption1,option2=:newOption2,option3=:newOption3 WHERE id=:ID")
// fun updateQuestion(newQuestion:String,newDate:String,newOption1:String,newOption2:String,newOption3:String,ID:Int)
}
回购:-
private class UpdateQuestion(dao:IcebreakerDao):AsyncTask<IceBreakerModel,Unit,Unit>(){
val questionDao = dao
override fun doInBackground(vararg params: IceBreakerModel?) {
val model = params[0]!!
questionDao.updateIcebreakerQuestion(model)
// questionDao.updateQuestion(model.question,model.date,model.option1,model.option2,model.option3,model.id)
}
}
最后是我要更新的主要活动
iceBreakerViewModel.updateQuestion(IceBreakerModel(question,Date().toString(),option1,option2,option3))
adapter.notifyDataSetChanged()
【问题讨论】:
-
您在 DAO 中使用 @Update 查询并从视图中调用 updateQuestion() 函数。请更正并重试。
-
@PRERNAGUPTA 请再次检查,我正在从我已经拥有的 viewModel 中调用 updateQuestion。有趣的 updateQuestion(question:IceBreakerModel){ repository.updateQuestion(question) }
标签: android kotlin mvvm android-room