Android开发(Kotlin) ViewModel基本用法示例完整指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Android开发(Kotlin) ViewModel基本用法示例”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
目录
- ViewModel基本用法
- 向ViewModel传递参数
ViewModel基本用法
新建viewmodel
class MyViewModel: ViewModel() {
}
实现一个计数器
class MyViewModel : ViewModel() {
var count = 0
}
从实现思路看,在activity采用ViewModel,拿到ViewModel的实例需借助ViewModelProvider。点击按钮一次计数器加1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivityClickBinding.inflate(layoutInflater)
setContentView(binding.root)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
binding.clickButC.setOnClickListener {
viewModel.count++
refreshCount()
}
refreshCount()
}
private fun refreshCount() {
binding.clickTvText.text = viewModel.count.toString()
}
旋转屏幕后,计数器的数据仍然存在
向ViewModel传递参数
改进上面的例子,保证退出程序后,重新打开,数据任然存在。
修改viewmodel
class MyViewModel(counter: Int) : ViewModel() {
var count = counter
}
counter记录之前保存的值
从实现思路看,新建ViewModelProvider.Factory,向MyViewModel的构造函数传递数据。添加构造函数,重写create方法,
class MyViewModelFactory(private val counter: Int) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return MyViewModel(counter) as T
}
}
修改activity
class ClickActivity : ComponentActivity() {
lateinit var viewModel: MyViewModel
lateinit var binding:ActivityClickBinding
lateinit var sp: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivityClickBinding.inflate(layoutInflater)
setContentView(binding.root)
sp = getSharedPreferences("data",MODE_PRIVATE)
val countSp = sp.getInt("count",0)
viewModel = ViewModelProvider(this, MyViewModelFactory(countSp)).get(MyViewModel::class.java)
binding.clickButC.setOnClickListener {
viewModel.count++
refreshCount()
}
refreshCount()
}
private fun refreshCount() {
binding.clickTvText.text = viewModel.count.toString()
}
override fun onPause() {
super.onPause()
sp.edit{
putInt("count",viewModel.count)
}
}
}
到此这篇关于Android开发(Kotlin) ViewModel基本用法的文章就介绍到这了,更多相关Android ViewModel用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!
您可能感兴趣的文章:
- Android Jetpack组件ViewModel基本用法详解
- Android ViewModel与Lifecycles和LiveData组件用法细致说明
- Android学习总结之Java和kotlin区别超详细分析
- Android开发Kotlin语言协程中的同时发问题和互斥锁
- Android开发Kotlin语言协程的依赖及采用示例
相关资讯
-
09.07
git忽略CRLF警告完整指南
-
09.07
Android通过Dialog实现方式全屏的示例代码实用指南
-
09.07
Android开发(Kotlin) ViewModel基本用法示例完整指南
-
09.07
解决GitHub SSH连接超时问题及分析实用指南
-
09.07
Android开发教程之屏幕变更事件实用指南
-
09.07
从零开始讲解Android Studio打包WebView应用教程(附签名配置)实用指南
游戏推荐
推荐专题
热门阅读
推荐下载
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏