【问题标题】:How to set initialize and set value to data class parameter LiveData in ViewModel如何在 ViewModel 中为数据类参数 LiveData 设置初始化和设置值
【发布时间】:2021-07-23 08:07:13
【问题描述】:

这是我的数据类

SaleData(数据类)

data class SaleData(
    var saleType: Int = 1,
    var saleDetail: Int,
    var salePrice: Int,
    var saleRate: Int,
    var printAmount: Int
)

视图模型

private val _saleData: MutableLiveData<SaleData> = MutableLiveData()
val saleData: LiveData<SaleData>
    get() = _saleData
init {
    
    _saleData.value?.saleType = 1
    
    changeSaleType()
}

fun changeSaleType() {
    _saleData.value?.saleType = 2
}

但是像 Log.d("DataLog","" + saleData.value?.saleType) 这样记录 saleType,它返回 null。 我将 saleType 更改为 Int,

private val _saleType: MutableLiveData<Int> = MutableLiveData()
val saleType: LiveData<Int>
    get() = _saleType

成功返回数据。 所以我有一个问题。 对象类的liveata值如何保存和查询?

【问题讨论】:

  • 据我所知,将数据设置为 livedata 不会立即应用。这是因为它习惯于在改变时被观察到。但是,您可以像这样启动您的实时数据; private val _saleData: MutableLiveData = MutableLiveData(SaleData(...)),给它一个默认值。
  • @March3April4 谢谢,但不是马上我不确定这是存储值的正确方法。

标签: android android-livedata


【解决方案1】:
_saleData.value?.saleType = 1

这里你必须用非空对象初始化 livedata 值 soz 如果你有SaleData 类:

_saleData.value = SaleData()

在它之后,值不会为空

【讨论】:

  • 谢谢,如果是对象,我意识到我必须在初始化一次后继续。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
相关资源
最近更新 更多