更新 ViewModel 和 View 失败
Update ViewModel and View fails
我正在尝试使用 Fragment
和 ViewModel
通过 ViewModel 更新我的视图中的值。
问题是我没有更新我想通过 viewModel 发送的值(现在它是硬编码的,但我正在考虑 API 请求知道一个数字以使用 postValue 将其设置到我的 viewModel这并没有像我预期的那样工作)
这是我的代码:
片段
private var numberedValue = 0.0
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupObservers()
setupView()
}
private fun setupObservers(){
viewModel.obtainNumberedValue()
viewModel.getNumberedValue().observe(viewLifecycleOwner, { it ->
numberedValue = it
})
}
private fun setupView(){
binding.tvValue.text = numberedValue.toString()
}
ViewModel
private val numberedValue = MutableLiveData<Double>().apply { value = 0.0 }
fun obtainNumberedValue() {
numberedValue.postValue(200.00)
}
fun getNumberedValued(): LiveData<Double> = numberedValue
Ps。我得到 0.0 而不是 200.0
我认为如果你这样做可以改进你的代码
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupObservers()
}
private fun setupObservers(){
viewModel.obtainNumberedValue()
viewModel.getNumberedValue().observe(viewLifecycleOwner, { it ->
setupTextView(it)
})
}
private fun setupTextView(value: Double) {
binding.tvValue.text = "$value"
}
我们删除这一行 private var numberedValue = 0.0
然后我们将方法添加到观察者方法中,在我们得到值的任何更新时,ui 将被更新
我正在尝试使用 Fragment
和 ViewModel
通过 ViewModel 更新我的视图中的值。
问题是我没有更新我想通过 viewModel 发送的值(现在它是硬编码的,但我正在考虑 API 请求知道一个数字以使用 postValue 将其设置到我的 viewModel这并没有像我预期的那样工作)
这是我的代码:
片段
private var numberedValue = 0.0
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupObservers()
setupView()
}
private fun setupObservers(){
viewModel.obtainNumberedValue()
viewModel.getNumberedValue().observe(viewLifecycleOwner, { it ->
numberedValue = it
})
}
private fun setupView(){
binding.tvValue.text = numberedValue.toString()
}
ViewModel
private val numberedValue = MutableLiveData<Double>().apply { value = 0.0 }
fun obtainNumberedValue() {
numberedValue.postValue(200.00)
}
fun getNumberedValued(): LiveData<Double> = numberedValue
Ps。我得到 0.0 而不是 200.0
我认为如果你这样做可以改进你的代码
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupObservers()
}
private fun setupObservers(){
viewModel.obtainNumberedValue()
viewModel.getNumberedValue().observe(viewLifecycleOwner, { it ->
setupTextView(it)
})
}
private fun setupTextView(value: Double) {
binding.tvValue.text = "$value"
}
我们删除这一行 private var numberedValue = 0.0 然后我们将方法添加到观察者方法中,在我们得到值的任何更新时,ui 将被更新