最近在做一个相册的项目, 会有这么一个场景,就是相册列表点击图片进入大图, 如何共享查询后的相册数据。
考虑到有三种方式:
使用方法:
open fun <T : ViewModel> createViewModel(activity: FragmentActivity?, cls: Class<T>?): T {
return ViewModelProvider(activity!!)[cls!!]
}
viewModel = createViewModel(this, modelClass as Class<VM>)
//关联ViewModel
binding?.setVariable(viewModelId, viewModel)
companion object {
var activity: NormalGalleryActivity? = null
}
override fun onCreate(savedInstanceState: Bundle?) {
activity = this
}
private val normalModel = NormalGalleryActivity.activity?.viewModels<NormalGalleryViewModel>()?.value
//绑定到当前布局
binding?.model = normalModel
以上最关键的是 activity 的引用以及 viewModels的使用
而viewModels 需要在buildGradle 中引用
api "androidx.activity:activity-ktx:1.6.0-alpha01"
代码只贴出了关键部分,如果需要看全,可以去我的github 中查看。