当前位置: 首页 > news >正文

Jetpack - ViewModel

一、概念

二、使用

2.1 创建ViewModel

//无参
class MainViewModel : ViewModel() {}
//有参
class MainViewModel(mainRepository: MainRepository) : ViewModel() {}
class MainViewModelFactory(private val mainRepository: MainRepository) : ViewModelProvider.Factory {override fun <T : ViewModel> create(modelClass: Class<T>): T {return MainViewModel(mainRepository) as T}
}

2.2 View中使用

//使用一
val viewmodel = ViewModelProvider(this)[MainViewModel::class.java]    //无参
val viewModel = MainViewModelFactory(MainRepository()).create(MainViewModel::class.java) //有参
//使用二(by lazy 延迟初始化)
val viewmodel by lazy { ViewModelProvider(this)[MainViewModel::class.java] }    //无参
val viewmodel by lazy { MainViewModelFactory(MainRepository()).create(MainViewModel::class.java) }
//使用二(使用委托)源码带延迟初始化,推荐!
val viewModel by viewModels<MainViewModel>()    //无参
val viewModel by viewModels<MainViewModel> { MainViewModelFactory(MainRepository()) } //有参

2.3 Compose中使用

//形参中用作默认参数
viewModel: MainViewModel = viewModel()
//作用域中使用
val viewModel = viewModel<MainViewModel>()

http://www.lryc.cn/news/94488.html

相关文章:

  • 【新版系统架构】第十三章-层次式架构设计理论与实践
  • 剖析Linux文件系统
  • 简介Maven结构与配置方法
  • 好用的网址6
  • MySQL数据库---笔记5
  • Yocto:初始
  • autodl算力租用平台应用于pycharm
  • 高德地图的使用
  • <List<Map<String,String>>> 删除元素常见的误区以及删除方法
  • Linux下的编辑器——vim的简单上手指南
  • C++多线程学习(二、多线程的几种创造方式【有返回值的之后讲】)
  • 前端开发框架生命周期详解:Vue、React和Angular
  • 【Java从入门到大牛】程序流程控制
  • UML学习统一建模语言
  • 【C++学习笔记】RAII思想——智能指针
  • ubantu配置python环境
  • 单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)
  • dockerfile常用指令
  • Matlab/simulink与dsp28335联合开发教程
  • 新项目搞完啦!!!
  • 分享一个可交互的小场景(二)
  • 2.5 DNS 应用 -- 1. DNS 概述
  • 基于STM32麦克风阵列音频信号处理系统设计
  • 《重构》:Extract Class and Inline Class
  • 腾讯云对象存储联合DataBend云数仓打通数据湖和数据仓库
  • ExceptionLess windows部署。
  • 使用python实现1DCNN-GRU回归预测
  • 移动端数据可视化设计
  • Linux文件系统概述
  • go专业数据结构与算法