Android ViewModel使用模板

1,创建ViewModel类

//MainViewModel.kt
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.example.myapplication.entity.Banner
import com.example.myapplication.network.BaseResponse
import com.example.myapplication.network.NetworkUtil
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response

class MainViewModel : ViewModel() {
    private val _errorLiveData: MutableLiveData<String> = MutableLiveData()
    val errorLiveData: LiveData<String> = _errorLiveData

    private val _bannerLiveData = MutableLiveData<List<Banner>>()
    val bannerLiveData:LiveData<List<Banner>> = _bannerLiveData

    fun getBanners(){
        NetworkUtil.wanAndroidApi.getBanners()
            .enqueue(object : Callback<BaseResponse<List<Banner>>> {
                override fun onResponse(
                    call: Call<BaseResponse<List<Banner>>>,
                    response: Response<BaseResponse<List<Banner>>>
                ) {
                    _bannerLiveData.value=response.body()?.data
                }

                override fun onFailure(
                    call: Call<BaseResponse<List<Banner>>>,
                    t: Throwable
                ) {
                    _errorLiveData.value = t.message.toString()
                }
            })
    }
}

2,引用ViewModel

//MainActivity.kt
class MainActivity : ComponentActivity() {
    private lateinit var mViewModel:MainViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
              Column(Modifier.fillMaxSize(), 
                  horizontalAlignment = Alignment.CenterHorizontally) { 
                var textState by rememberSaveable { mutableStateOf("Initial Text")}                
                mViewModel.bannerLiveData.observe(this@MainActivity){
                        textState = it.toString() }

                 Button(onClick = { mViewModel.getBanners() }) { 
                        Text(text = "获取网络信息") } 

                        Text(text = textState) 
            }
        }

        mViewModel = ViewModelProvider(this)[MainViewModel::class.java]
    }
   
}

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

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

相关文章

[极客大挑战 2019]Upload、[ACTF2020 新生赛]Upload、[MRCTF2020]你传你呢

[极客大挑战 2019]Upload 打开环境&#xff0c;是上传一句话木马的题 先上传1.php试试&#xff0c;发现不可以 试试改后缀为phtml&#xff0c;提示语句中不能包含<?&#xff0c;只能改木马&#xff1a; <script language"php">eval($_POST[line]);</sc…

[C++][算法基础]欧拉函数(常规求质数)

给定 n 个正整数 &#xff0c;请你求出每个数的欧拉函数。 欧拉函数的定义 1∼N 中与 N 互质的数的个数被称为欧拉函数&#xff0c;记为 ϕ(N)。 若在算数基本定理中&#xff0c;N…&#xff0c;则&#xff1a; ϕ(N) N… 输入格式 第一行包含整数 n。 接下来 n 行&#xf…

通信原理(2)--随机过程

通信原理(2)–随机过程 3.1随机过程的基本概念 随机过程{x(t)}由一族时间函数 x i ( t ) x_i(t) xi​(t)&#xff0c;i1,2.3…组成&#xff0c;每一个时间函数 x i ( t ) x_i(t) xi​(t)称为随机过程{x(t)}的一个样本函数&#xff08;一个实现&#xff09; 每个样本函数在时间…

使用composer开发自己的扩展包

前言 日常的开发中我们经常用到composer去安装其他人封装好的扩展包&#xff0c;如果你有好的功能代码想分享给其他人使用&#xff0c;就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。 1.新建仓…

d10(104-112)-勇敢开始Java,咖啡拯救人生

目录 多态[面向对象的三大特征&#xff1a;封装 继承 多态]polymorphism 多态的好处 多态下的类型转换问题 注意事项 final关键字 注意事项 常量 抽象类abstract 好处 运用场景 接口interface 好处 接口中新增的三种方法&#xff1a; 接口的多继承 内部类[类中五…

江苏开放大学2024年春《机电设备安装与调试 050095》第三次形成性考核作业参考答案

电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题&#xff0c;包含国家开放大学、广东开放大学、超星等等多个平台题库&#xff0c;考试作业必备神器。 公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#…

boot2docker实践@FreeBSD

boot2docker是专为Docker而设计的轻量极Linux发型包&#xff0c;解决Windows、OS X、FreeBSD不能安装Docker的问题。Boot2Docker完全运行于内存中&#xff0c;24M大小&#xff0c;启动仅5-6秒。Boot2Docker需要运行在VirtualBox中&#xff0c;同时意味着有VirtualBox就能运行Bo…

万业企业发布23年年报、24年一季报,集成电路业务同比大增近七成 转型成效显著

4月26日晚间&#xff0c;万业企业&#xff08;600641&#xff09;发布2023年年度报告及2024年一季度报告。2023年&#xff0c;公司实现营业收入9.65亿元&#xff0c;归母净利润1.51亿元。其中&#xff0c;公司集成电路设备制造业务收入较上年同期大幅增长67.53%&#xff0c;公司…

CYCLE:学习自我完善代码生成

目录 IntriductionOverview of the Approach 预训练的代码语言模型在代码生成方面取得了可喜的性能&#xff0c;并提高了人类开发人员的编程效率。然而&#xff0c;现有的代码 LM 评估通常忽略了它们的 自我求精能力&#xff0c;这些评估仅关注一次性预测的准确性。对于代码 L…

Leetcode - 周赛394

目录 一&#xff0c;3120. 统计特殊字母的数量 I 二&#xff0c;3121. 统计特殊字母的数量 II 三&#xff0c;3122. 使矩阵满足条件的最少操作次数 四&#xff0c;3123. 最短路径中的边 一&#xff0c;3120. 统计特殊字母的数量 I 本题就是统计有多少个字母的大小写同时出现…

AIGC学习步骤

目录 AIGC学习步骤 步骤一&#xff1a;理解基本概念 步骤二&#xff1a;学习资源 步骤三&#xff1a;深入研究 步骤四&#xff1a;联系专家 步骤五&#xff1a;实践应用 步骤六&#xff1a;持续学习 AIGC学习步骤 我们先来说说什么是AIGC&#xff1f; 生成式人工智能—…

第二篇:Python环境搭建:从初学者到专家

Python环境搭建&#xff1a;从初学者到专家 在编程的世界里&#xff0c;准备好一个高效而舒适的开发环境是走向成功的第一步。在这篇博客文章中&#xff0c;我们将一起探索如何为Python编程搭建一个理想的环境。无论你是完全的新手还是希望提升现有的技能&#xff0c;本文都会…

IDEA快速入门

目录 1. 概述 2. 安装 3. 激活 4. 关闭自动更新 5. 创建Java项目 5.1 配置JRE 5.2 创建项目 6. 配置设置 6.1 主题 6.2 设置字体默认大小 6.3 鼠标滚轮改变字体大小 6.4 设置自动导入 6.5 项目选择 7. lombok插件 7.1 安装插件 7.2 启用注解 8. 安装包及插件…

SecuPress Pro 专业级WordPress网站安全防护插件优化版

下载地址&#xff1a;SecuPress Pro 专业版.zip SecuPress Pro&#xff1a;专业的WordPress安全解决方案 如果您没有时间进行每周扫描&#xff0c;SecuPress Pro将是您的理想选择。SecuPress Pro提供了所有SecuPress Free的功能&#xff0c;同时还增加了一些高级选项&#xff…

优维全新力作:统一采控平台

在本月&#xff0c;优维新一代核心系统「EasyOps」7.0大版本重磅上线&#xff0c;为广大用户带来了“更核心、更智能、更开放、更客制”的产品能力。&#xff08;点击回看&#xff1a;重磅&#xff01;优维科技发布EasyOps7.0大版本&#xff09;在本次版本能力分享上&#xff0…

VBA技术资料MF145:清空回收站

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

各种CSS导航代码集合!CV即可!水平导航,垂直导航,jd粘性导航…

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

mysql的多表查询和子查询

多表查询&#xff1a;查询数据时&#xff0c;需要使用多张表来查询 多表查询分类&#xff1a; 1.内连接查询 2.外连接查询 3.子查询 笛卡尔积&#xff1a; create table class (id int primary key auto_increment,name varchar(10) ); create table student (id int primar…

【TCP:可靠数据传输,快速重传,流量控制,TCP流量控制】

文章目录 可靠数据传输TCP&#xff1a;可靠数据传输TCP发送方事件快速重传流量控制TCP流量控制 可靠数据传输 TCP&#xff1a;可靠数据传输 TCP在IP不可靠服务的基础上建立了rdt 管道化的报文段 GBN or SR 累计确认&#xff08;像GBN&#xff09;单个重传定时器&#xff08;像…

搞懂特殊的引用类型接口、枚举、注解、记录、包装类!

面向对象系列——特殊的引用类型&#xff08;与class并列地位&#xff09; 文章目录 面向对象系列——特殊的引用类型&#xff08;与class并列地位&#xff09;特殊的&#xff1a;接口、枚举、注解、记录&#xff0c;包装类一、interface接口(不是类)—提供一种规范(具有多态性…
最新文章