android jetpack compose Model对象更新变量 UI不更新、不刷新问题

以前是搞老本行Android原生开发的,因为工作原因,一直在用vue小程序;因为一些工作需要,又需要用到Android原生开发,建了个项目,打开源码一看,天塌了!!!我以前的layout.xml布局呢,怎么变成android jetpack compose组件了。百度一看说是Android最新的框架组件,哎~~本着能吃一口细糠,不吃一口粗粮的原则,学习了一下Compose;以下是我约到的难题,建立了一个Model类,然后Model变量更新,UI不刷新也不更新;后面解决了,记录一下!

  1. 首先,我建立了一个Model对象:

class DeviceGpioMModel  {
    var iconUnUse: Int? = null

    var icon: Int? = null

    var iconStop: Int? = null

    var name: String? = null

    var notes: String? = null

    var port: Int? = null

    var use  by mutableIntStateOf(0)

    fun useDevice() {
        this.use=1
    }

    fun getShowIcon(): Int {
        return when (use) {
            1 -> // 使用中
                icon!!

            2 -> // 暂停
                iconStop!!

            else -> // 未使用
                iconUnUse!!
        }
    }

    fun getStatusIcon(): Int {
        return R.drawable.ic_yunxing_u
    }
}

然后我的需求是,实例化上面的对象,然后点击组件,把use状态改为1,然后组件在调用getShowIcon()方法来获取对应的图标状态

  1. 以前的老代码:
var use  = 0
  1. 新的代码:
var use by mutableIntStateOf(0)

只需要把变量换成 by mutable相关state的方法,然后ui就会自动刷新了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943054.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Anaconda搭建Python虚拟环境并在Pycharm中配置(小白也能懂)

为什么要搭建虚拟环境? 搭建虚拟环境的主要目的是为了解决多个Python项目之间可能存在的库冲突问题。当你在同一台计算机上运行多个Python项目时,不同的项目可能会依赖于不同版本的库或者相同版本的库的不同补丁。如果所有项目都共享相同的Python环境&am…

mac_录屏

参考: mac m1上系统内录方法BlackHole代替soundflower录音(附安装包) https://blog.csdn.net/boildoctor/article/details/122765119录屏后没声音?这应该是 Mac(苹果电脑) 内录声音最优雅的解决方案了 https://www.bilibili.com/…

upload-labs关卡记录13

这里和关卡12非常类似,唯一不同就是12关用到get方法,这里用到post方法。因此对应的截断方式也不一样,依旧是使用我们的bp进行抓包, 然后依旧是在upload后加上shell.php,这里用是为了hex时好区别我们要在哪里更改&#…

网络管理-期末项目(附源码)

环境:网络管理 主机资源监控系统项目搭建 (保姆级教程 建议点赞 收藏)_搭建网络版信息管理系统-CSDN博客 效果图 下面3个文件的项目目录(python3.8.8的虚拟环境) D:\py_siqintu\myproject5\Scripts\mytest.py D:\py_siqintu\myproject5\Sc…

通过GRE协议组建VPN网络

GRE(Generic Routing Encapsulation,通用路由封装协议)协议是一种简单而有效的封装协议,它在网络中的广泛应用,比如在构建VPN网络。   GRE是一种封装协议,它允许网络层协议(如IP)的…

kafka的备份策略:从备份到恢复

文章目录 一、全量备份二、增量备份三、全量恢复四、增量恢复 前言:Kafka的备份的单元是partition,也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互,follow从leader副本进…

CHM助手 >> 如何安装CHM助手

1 如何安装CHM助手 下载CHM助手.ezip,下载地址打开EverEdit,选择主菜单“扩展 -> 扩展管理 -> 从本地文件安装扩展”,在弹出的文件浏览窗口中选择插件安装包,如下图所示: 🕮说明:   …

vulnhub靶场【shuriken】之node

前言 靶机:shuriken-node,ip地址192.168.1.127 攻击:kali,ip地址192.168.1.16 主机发现 使用arp-scan -l或者netdiscover -r 192.168.1.1/24扫描 信息收集 使用nmap扫描端口 网站信息探测 访问8080端口网站,可以…

数据仓库工具箱—读书笔记02(Kimball维度建模技术概述04、使用一致性维度集成)

Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 第二章前言部分作者提到:技术的介绍应该通过涵盖各种行业的熟悉的用例展开(赞同…

[实战]推流服务SRS安装

业务场景 在Web浏览器端展示摄像头的视频数据。 协议 物联代理推流协议:rtmp 浏览器器拉流协议:http-flv 推流方案 1、Nginx加nginx-http-flv-modules模块 2、采用SRS服务器 推流服务SRS网站:https://ossrs.io/lts/zh-cn/ 推流服务…

PH热榜 | 2024-12-25

1. Assistive24 标语:为残障人士提供的免费辅助技术 介绍:Assistive24 是一款免费的 Chrome 浏览器扩展程序,可以帮助患有注意力缺陷多动障碍 (ADHD)、阅读障碍 (dyslexia) 和低视力等障碍的用户更方便地浏览网页。它提供语音导航、自定义…

Java中三大构建工具的发展历程(Ant、Maven和Gradle)

🐸 背景 我们要写一个Java程序,一般的步骤是编译,测试,打包。 这个构建的过程,如果文件比较少,我们可以手动使用java, javac,jar命令去做这些事情。但当工程越来越大,文件越来越多&#xff0c…

自学记录HarmonyOS Next DRM API 13:构建安全的数字内容保护系统

在完成了HarmonyOS Camera API的开发之后,我开始关注更复杂的系统级功能。在浏览HarmonyOS Next文档时,我发现了一个非常有趣的领域:数字版权管理(DRM)。最新的DRM API 13提供了强大的工具,用于保护数字内容…

Unity中如何修改Sprite的渲染网格

首先打开SpriteEditor 选择Custom OutLine,点击Genrate 则在图片边缘会出现边缘线,调整白色小方块可以调整边缘 调整后,Sprite就会按照调整后的网格渲染了。 如何在UI中使用? 只要在UI的Image组件中选择Use Sprite Mesh 即可 结果&#xff1…

跟着 8.6k Star 的开源数据库,搞 RAG!

过去 9 年里,HelloGitHub 月刊累计收录了 3000 多个开源项目。然而,随着项目数量的增加,不少用户反馈:“搜索功能不好用,找不到想要的项目!” 这让我意识到,仅仅收录项目是不够的,还…

Sashulin升级啦,开箱即用!

经过多年的不断投入,升级为了Sashulin基础软件系列,本系列包含: 1、Sashulin IDE 2025全域通用开发工具 通用型Java开发工具,并可以进行业务流可视化开发。 2、发布Sashulin Webserver 2025 将Html等网页文件发布成网站&#xf…

linux下搭建lamp环境(dvwa)

lamp简介 LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管理系统或数据库服务器 PHP、Perl或Python,脚本语言 # ubuntu安装…

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 使用Ollama添加大模型

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 使用Ollama添加大模型 flyfish 当安装完ragflow之后,开始添加大模型 $ git clone https://github.com/infiniflow/ragflow.git $ cd ragflow $ docker compose -f docker/docker-compose.yml up -d浏览器打开http:…

NiChart 多模态神经影像(structural MRI,functional MRI,and diffusion MRI)处理和分析工具包安装

NiChart多模态神经影像部署 NiChart 本地安装Git clone 问题personal access token PAT 问题 NiChart 云端注册AWS验证问题 NiChart 是UPenn大学,Christos Davatzikos教授开发的一个多模态MRI影像,structural (sMRI), diffusion (dMRI), and …

路由策略

控制层流量 --- 路由协议传递路由信息时产生的流量 数据层流量 --- 设备访问目标地址时产生的流量 所谓的路由策略----在控制层面转发流量的过程中,截取流量,之后修改流量再转发或不转发的技术,最终达到影响路由器路由表的生成&#xff0c…