如何获取带参数的ViewModel

大家都知道,不带参数的ViewModel获取方法使用非常简单,

final UserModel viewModel = ViewModelProviders.of(this).get(UserModel.class);

那如果一个带参数的ViewModel,应该如何获取呢?

class MsgActivityModel(extras: Bundle?) : ViewModel() {
}

它的使用需要定义一个继承于AndroidViewModelFactory的工厂类,

    private inner class MsgViewModelFactory(application: Application) : ViewModelProvider.AndroidViewModelFactory(application) {
        override fun <T : ViewModel?> create(modelClass: Class<T>): T {
            if (modelClass == MsgActivityModel::class.java) {
                return MsgActivityModel(intent.extras) as T
            }
            return super.create(modelClass)
        }
    }

使用时,ViewModelProviders.of()方法带上自定义的Factory参数就可以了

val msgActivityModel  = ViewModelProviders.of(this, MsgViewModelFactory(AbsApplication.getInst())).get(MsgActivityModel::class.java)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值