【问题标题】:Gson didnt support MutableLiveData <model> in kotlinGson 在 kotlin 中不支持 MutableLiveData <model>
【发布时间】:2021-08-22 23:22:04
【问题描述】:

我有以下代码,当我从 JSON 反序列化对 Gson 的响应时收到以下异常:

 java.lang.ClassCastException: com.test.model.photos.photosModel cannot be cast to androidx.lifecycle.MutableLiveData

当我收到来自服务器的响应时,这是我的代码:

  lateinit var _photosModel:MutableLiveData<photosModel>

  val gson = Gson()
            val modelObj = gson.fromJson<Any>(response.toString(), photosModel::class.java)
            _photosModel = modelObj as MutableLiveData<photosModel>

【问题讨论】:

    标签: android kotlin mvvm gson


    【解决方案1】:

    仅仅因为您从 Json 解析到模型是 Any ,而您需要输入 MutableLiveData

    更重要的是,如果你想为MutableLiveData设置数据,你应该使用两种方法setValue()如果你想在主线程中设置值,postValue()如果你想在其他线程中设置值。

    就这样:

    YourViewModel.kt

    private val _photosModel = MutableLiveData<PhotosModel>()
    val photosModel: LiveData<PhotosModel> = _photosModel
    
    val gson = Gson()
    val modelObj: PhotosModel = gson.fromJson(response.toString(), PhotosModel::class.java) // You should make the first letter of the class uppercase.
    
    // Set value for mutable livedata
    _photosModel.value = modelObj
    

    【讨论】:

    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2023-01-11
    • 2022-01-10
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多