【问题标题】:Android View Model passing parameterAndroid View Model 传递参数
【发布时间】:2022-10-18 14:47:24
【问题描述】:

我是 Kotlin 的新手,尝试使用 Jetpack Compose 制作应用程序,需要帮助解决以下问题:

在我的 DAO 中,我创建了以下查询:

@Query("SELECT * FROM GrungeInfoDbModel WHERE infoname = :infoname")
fun getInfoGrunge(infoname: String): GrungeInfoDbModel

在存储库中声明它:

interface Repository {

    fun getAllGrunges(): LiveData<List<GrungeModel>>

    fun getAllGrungeInfos(): LiveData<List<GrungeInfoModel>>

    fun getGrungeInfo(infoname: String): LiveData<GrungeInfoModel>
}

RepositoryImpl:

    override fun getGrungeInfo(infoname: String): LiveData<GrungeInfoModel> = grungeInfoLiveData

现在的问题是:如何将参数 infoname 传递给我的 ViewModel:

    val grungeInfoByInfoname by lazy { repository.getGrungeInfo(**here should be the parameter infoname) }

谢谢你的帮助!

【问题讨论】:

    标签: android kotlin mvvm android-mvvm


    【解决方案1】:

    参考 android dev documentation,您可以在 ViewModel 中执行以下操作:

    private val infonameInput = MutableLiveData<String>()
    val grungeInfo: LiveData<GrungeInfoModel> = Transformations.switchMap(infonameInput) { infoname -> 
        repository.getGrungeInfo(infoname) 
    }
    
    private fun setInfonameInput(infoname: String) {
        infonameInput.value = infoname
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 2022-01-23
      • 2019-05-09
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      相关资源
      最近更新 更多