大象笔记 > 标签 > LiveData
2022-11-25 · 阅读 3790 · 字数 273
概述 在 activity 中监听 ViewModel 中数据的变化,当有变化时,将对应的数据显示在界面组件上 LiveData 在 ViewModel 中使用,上面监听的数据类型就是 LiveData 类型。 同时可用于 Activity 及 Fragment 间的数据共享 使用逻辑 在 activity 内新建一个 ViewModel,监听数据变化 当有数据变化时,在回调中,更新 UI View 的展示 ViewModel 内部则类似微信小程序的 data,里面定义一堆变量,监听的就是这些变量的变化,然后通过 postValue, setValue 这种类似小程序 setData 的 ...
2021-09-18 · 阅读 8328 · 字数 563
思路 对 viewmodel 中 livedata 的监听也是返回一个 state. 但这个 state 是不能像 compose 内的 state 直接修改的。要修改,需要调用 viewmodel 中的函数来间接修改。 尝试过的方案 方案一(失败):ViewModel 中定义 mutableStateOf, Composable 中定义 mutableStateOf。mutableStateOf 看起来是初始化那一刻用的啥值,就是啥值,无法自动更新。 方案二(可行):ViewModel 中定义 MutableLiveData,Composable 中使用 observeAsState 监听 ...
2022-10-29 · 阅读 4324 · 字数 584
可以包含任何类型的数据,通过监听 LiveData,在数据发生变化时,可以立即得到通知。 LiveData 与 ViewModel 通常 LiveData 定义在 ViewModel 中,然后在 Activity / Fragment 中监听 LiveData 的变化。 不在 Activity 中定义 LiveData,原因有两点: 防止 Activity / Fragment 过于臃肿。要分工明确:Activity / Fragment 只负责显示数据;ViewModel 负责存储数据及状态。 防止 Activity 因屏幕旋转被销毁,状态数据消失。而存在 ViewModel 中就能很好的 ...
2022-11-25 · 阅读 1844 · 字数 162
例如加载数据时, 显示转圈提示。或者显示 connecting / finding data ... 也可以加上动态图标: https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md 用最下面的转圈图标非常直观。 注意还有失败的情况,比如列表中蓝牙设备消失或关闭。 状态放在哪里 还是存储在 ViewModel 中最合适。 同时在 activity / fragment 中对状态 LiveData 进行监听。 LiveData ...
2023-07-19 · 阅读 1146 · 字数 352
界面功能 界面功能是禁忌症确认,只有不存在任何一项的时候,才能进入使用。 每一项是一个 Switch 按钮,代表是否勾选。 记录目的 感觉我对 LiveData 的理解还是不够充分。也许经历越多的实战,才能理解更多吧。 修改其中一个 item 的 field class ViewHolder(private val binding: ConfirmRowItemBinding) : RecyclerView.ViewHolder(binding.root) { fun bind(item: ConfirmationItem) { binding.name.text = item.ti ...
2023-09-22 · 阅读 1068 · 字数 399
这周在重构一个 Android 平板蓝牙控制的 App,之前为了赶工期,代码写的比较乱, 正好这段时间赶上多个客户的定制要求,发现要一套代码实现多套差异化的需求,如果代码不好好规整根本改不动。 自己欠的技术债,总归是要还的。 在改造的过程中,发现之前使用 LiveData 的方式有不少问题,总结一下: 逻辑不要放在 Fragment 中 能在 ViewModel 中处理的,尽量在 ViewModel 中处理。 Activity / Fragment 尽量只监听 LiveData, 然后直接显示,不做任何复杂的逻辑判断。 集中在 ViewModel 处理,逻辑更清晰。 多个 Fragment ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 game 电影 周末 joke |
---|---|
Geek | 健身 Laravel Git Vim MySQL Linux UI Windows SVN 纪录片 管理 Shell 游记 工具 手机 BackboneJS 自建博客 Mac DNS Tornado CDN Django Python AngularJS 理财 前端 Nginx 爬虫 Redis Javascript Browser 浏览器 推广 OAuth CSS PHP Social Networks 安全 运维 创业 杂记 VueJS Android Image IDE Java ReactJS 数据分析 SQLite RESTful 读书笔记 家电 ecshop Vagrant wordpress docker SEO GTD magento mongodb nodejs weex 冷知识 ruby iOS 微信小程序 AI CMS 快应用 backpack 广告联盟 OA 短信 UWP Win CSharp Tampermonkey graphviz 钉钉 WPS 数据字典 微信公众号 Fuchsia Adobe XD SQL Server thinkphp 代码规范 商业模式 Flutter 头痛的问题 serverless 视频制作 国际化 golang 服务器 Kotlin 网站建设 5G 笔记本 图片 spark spring 物联网 InfluxDB 图像识别 postgre rust |
成长的烦恼 | 闲言碎语 待产 不睡觉 写作 程序员 孙心然语录 原则 大鸿语录 |
地球 | 植物 时间 中文 赚钱 国家地理 烟台 一生伏首拜阳明 emoji 弟子规 英文 国际贸易 |