【发布时间】:2020-06-22 13:45:41
【问题描述】:
这是我的视图模型:
class MyProfileEditSharedViewModel : ViewModel() {
val question = MutableLiveData<String>()
val answer = MutableLiveData<String>()
fun setQuestion (q: String) {
question.value = q
}
fun setAnswer (a: String) {
answer.value = a
}
}
我使用 setQuestion 和 setAnswer 设置数据,如下所示:
viewModel.setQuestion(currentUserInList.question)
viewModel.setAnswer(currentUserInList.answer)
我尝试从 ViewModel 中获取问题和答案,如下所示:
val qnaQuestionData = communicationViewModel.question as String
val qnaAnswerData = communicationViewModel.answer as String
编译器说我不能将 MutableLiveData 转换为字符串。 我应该像我的二传手一样制作一个单独的吸气剂吗?听说kotlin不需要使用getter和setter,有没有办法在我的viewmodel中编辑val question和val answer而不使用getter和setter?
谢谢!!
【问题讨论】:
-
您应该观察
LiveData以获取其中更改的通知,而不是手动提取数据。请参阅文档:developer.android.com/topic/libraries/architecture/… -
您会使用
val qnaQuestionData = communicationViewModel.question.value ?: someDefault之类的东西,但通常您不希望同步检索 LiveData 的值,因为这违背了使用 LiveData 的目的。