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

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

  1. 首先,我建立了一个Model对象:
kotlin 复制代码
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. 以前的老代码:
kotlin 复制代码
var use  = 0
  1. 新的代码:
kotlin 复制代码
var use by mutableIntStateOf(0)

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

相关推荐
RDCJM12 小时前
【MySQL】在MySQL中STR_TO_DATE()以及其他用于日期和时间的转换
android·数据库·mysql
冬奇Lab12 小时前
AudioFlinger架构基础:Android音频系统的心脏
android·音视频开发·源码阅读
铁手飞鹰13 小时前
Visual Studio创建Cmake工程导出DLL,通过Python调用DLL
android·python·visual studio
冰语竹18 小时前
Android学习之相对布局
android
没有了遇见18 小时前
Android 中大型项目架构梳理
android
yashuk18 小时前
【MySQL】表的相关操作
android·mysql·adb
71-318 小时前
Android studio中真机操作
android·笔记·学习·其他·android studio
一只特立独行的Yang19 小时前
Android Focus小结
android
工控小龙人1 天前
核电行业HMI:核岛设备的安全监控与操作界面
ui·人机交互·制造·用户界面
aaajj1 天前
【Android】appops学习
android·学习