安卓mvvm

news2024/12/23 8:59:12

AndroidX的意思是android extension libraries, 也就是安卓扩展包

AndroidX其实是Jetpack类库的命名空间

(190条消息) AndroidX初识_Neda Wang的博客-CSDN博客









https://blog.csdn.net/weixin_38261570/article/details/111500044

viewmodel

ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据,就是根据activity/fragment的生命周期去存储和管理数据的,ViewModel是在Activity真正结束时才被清理掉

看了下源码 viewmodel内部其实就是一个hashmap的 操作  存储、读取和删除

管理ui的data

每个activity和frgment 对应一个viewmodel   里面包了liveData 双向绑定一般用其子类

MutableLiveData

livedata + databinding 实现双向绑定

DataBinding

首先是布局和activity 绑定

在对应module的build.gradle中,进行如下配置:

android {
    ...
    dataBinding {
        enabled true
    }
}


这样就配置完毕了。要注意的一点是,如果依赖的库中使用了data binding,那么app module中也需要进行配置
————————————————
版权声明:本文为CSDN博主「mhq42978」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013400743/article/details/52216350

新建一个acticvity 比如 TestActivity

新建一个xml  比如layout_test.xml

android studio 会自动生成一个LayoutTestBinding类

怎么把LayoutTestBinding和TestActivity关联

1.

import com.loong.mvvmexmple.databinding.LayoutTestBinding;

import java.util.concurrent.atomic.AtomicInteger;

public class TestActivity extends AppCompatActivity {

    private LayoutTestBinding binding;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //布局与activity绑定方法1  DataBindingUtil需要alt+enter 导入包
        LayoutTestBinding binding = DataBindingUtil.setContentView(this, R.layout.layout_test);

        //布局与activity绑定方法2    LayoutTestBinding 是databinding根据布局文件 layout_test.xml 自动生成的
//        binding = LayoutTestBinding.inflate(getLayoutInflater());
//        setContentView(binding.getRoot());

        AtomicInteger count = new AtomicInteger();
        binding.tv.setOnClickListener(view -> {
            count.getAndIncrement();
            binding.tv.setText("点击次数" + count);
            Toast.makeText(TestActivity.this, "点击" + count, Toast.LENGTH_SHORT).show();
        });
    }
}

此时无论布局文件是否被layout 包裹都可以展示 

public class FirstFragment extends Fragment {

    private FragmentFirstBinding binding;

    @Override
    public View onCreateView(
            LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState
    ) {

        binding = FragmentFirstBinding.inflate(inflater, container, false);
        return binding.getRoot();

    }

具体细节过程参考

DataBinding基本使用 - 简书 (jianshu.com)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】决策树-C4.5算法

1.C4.5算法 C4.5算法与ID3相似,在ID3的基础上进行了改进,采用信息增益比来选择属性。ID3选择属性用的是子树的信息增益,ID3使用的是熵(entropy, 熵是一种不纯度度量准则),也就是熵的变化值&…

回溯算法理论基础及组合问题

文章目录回溯算法理论基础什么是回溯法回溯法的效率回溯法解决的问题如何理解回溯法回溯法模板组合问题回溯算法理论基础 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中&…

LPWAN及高效弹性工业物联网核心技术方案

20多年前的一辆拖拉机就是一个纯机械的产品,里面可能并没有电子或者软件的构成;而随后随着软件的发展,拖拉机中嵌入了软件,它能控制发动机的功率及拖拉机防抱死系统;接下来,通过融入各种软件,拖…

js逆向基础篇-某房地产网站-登录

提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除! 网站链接:aHR0cHM6Ly9tLmZhbmcuY29tL215Lz9jPW15Y2VudGVyJmE9aW5kZXgmY2l0eT1iag== 案例分析: 本篇文章分析的是登录逻辑。话不多说,先看看登录中有哪些加密参数,在登录页面随便输入…

K8S DNS解析过程和延迟问题

一、Linux DNS查询解析原理(对于调用glibc库函数gethostbyname的程序)我们在浏览器访问www.baidu.com这个域名,dns怎么查询到这台主机呢?  1、在浏览器中输入www.baidu.com域名,操作系统会先查找本地DNS解析器缓存&a…

实例2:树莓派GPIO控制外部LED灯闪烁

实例2:树莓派GPIO控制外部LED灯闪烁 实验目的 通过背景知识学习,了解四足机器人mini pupper搭载的微型控制计算机:树莓派。通过树莓派GPIO操作的学习,熟悉GPIO的读写控制。通过外部LED灯的亮灭控制,熟悉树莓派对外界…

vue3 + vite 使用 svg 可改变颜色

文章目录vue3 vite 使用 svg安装插件2、配置插件 vite.config.js3、根据vite配置的svg图标文件夹,建好文件夹,把svg图标放入4、在 src/main.js内引入注册脚本5、创建一个公共SvgIcon.vue组件6.1 全局注册SvgIcon.vue组件6.2、在想要引入svg的vue组件中引…

Boom 3D最新版本下载电脑音频增强应用工具

为了更好地感受音乐的魅力,Boom 3D 可以让你对音效进行个性化增强,并集成 3D 环绕立体声效果,可以让你在使用任何耳机时,都拥有纯正、优质的音乐体验。Boom 3D是一款充满神奇魅力的3D环绕音效升级版,BOOM 3D是一个全新…

MyBatis 之四(动态SQL之 if、trim、where、set、foreach 标签)

文章目录动态 SQL1. if 标签2. trim 标签3. where 标签4. set 标签5. foreach 标签回顾一下,在上一篇 MyBatis 之三(查询操作 占位符#{} 与 ${}、like查询、resultMap、association、collection)中,学习了针对查询操作的相关知识点…

【C++】map和set的封装

文章目录一、前情回顾二、简化源码三、仿函数四、迭代器五、set的实现六、map的实现七、红黑树代码一、前情回顾 set 参数只有 key&#xff0c;但是map除了key还有value。我们还是需要KV模型的红黑树的&#xff1a; #pragma once #include <iostream> #include <ass…

游戏服务器算法-AOI基本介绍

一、直接比较所有对象 最直观也是最效率最低的一种方法。当一个事件发生&#xff0c;我们需要获得AOI范围以内的物体时&#xff0c;直接遍历游戏中所有的对象&#xff0c;并且进行坐标判断&#xff0c;如果小于或者等于AOI的范围&#xff0c;则为需要的游戏对象。 这种方法实…

零基础小白如何学会云计算?

云计算作为新兴互联网技术&#xff0c;也是IT服务的集大成者&#xff0c;包括了基础硬件服务、平台服务、应用程序开发、系统架构等服务内容。云计算的出现承接了众多IT技术和其他行业的发展&#xff0c;比如大数据、人工智能以及工业、金融、医疗、物流等&#xff0c;是经济社…

VBA提高篇_26 Textbox多行_ListBox_ComboBox

文章目录1. 文本框多行换行2. ListBox: 列表框2.1 列表框中添加条目的三种方法:3. ComboBox 组合框: 属性方法等同于以上ListBox1. 文本框多行换行 MultiLine: 控制文本框多行自动换行() Enterkeybehevior: True 代表允许在文本框中使用回车键换行 WordWrap: True 代表自动换…

/etc/fstab文件

文件/etc/fstab存放的是系统中的文件系统信息&#xff0c;当系统启动的时候&#xff0c;系统会自动地从这个文件读取信息&#xff0c;并且会自动将此文件中指定的文件系统挂载到指定的目录。当正确的设置了该文件&#xff0c;则可以通过mount /directoryname命令来加载一个文件…

Tapdata Connector 实用指南:数据入仓场景之数据实时同步到 BigQuery

【前言】作为中国的 “Fivetran/Airbyte”, Tapdata 是一个以低延迟数据移动为核心优势构建的现代数据平台&#xff0c;内置 60 数据连接器&#xff0c;拥有稳定的实时采集和传输能力、秒级响应的数据实时计算能力、稳定易用的数据实时服务能力&#xff0c;以及低代码可视化操作…

恢复 iPhone 和 iPad 数据的 10 种简单工具

它发生了.. 有时您需要从您的手机或平板设备恢复重要数据。 许多人已经开始将重要文件存储在手机上&#xff0c;因为他们几乎可以在任何情况下随时随地轻松访问数据。 从技术上讲&#xff0c;您会在几分之一秒内丢失所有存储的信息、照片、视频、音乐、文档等。因此&#xff…

一文3000字用Postman从0到1实现UI自动化测试

“阅读本文大概需要4分钟。Postman不是做接口测试的吗&#xff1f;为什么还能做UI自动化测试呢&#xff1f; 其实&#xff0c;只要你了解Selenium的运行原理&#xff0c;就可以理解为什么Postman也能实现UI自动化测试了。 Selenium底层原理 运行代码&#xff0c;启动浏览器后…

笔试题(十六):计算矩阵面积

# 我们给出了一个&#xff08;轴对齐的&#xff09;二维矩形列表 rectangles。 # 对于 rectangle[i] [xi1, yi1, xi2, yi2]&#xff0c;表示第i个矩形的坐标&#xff0c; # (xi1, yi1)是该矩形左下角的坐标&#xff0c; (xi2, yi2)是该矩形右上角的坐标。 # 计算平面中所有 r…

CAJ论文怎么批量免费转换成Word

大家都知道CAJ文件吗&#xff1f;这是中国学术期刊数据库中的文件&#xff0c;这种文件类型比较特殊。如果想要提取其中的内容使用&#xff0c;该如何操作呢&#xff1f;大家可以试试下面这种免费的caj转word的方法,多个文档也可以一起批量转换。准备材料&#xff1a;CAJ文档、…

信息系统项目管理师知识点汇总(2023最新)

信息系统项目管理师 信息系统项目管理师简介如何应对考试考试细节与学习 十大管理 十大管理四十七过程 信息化和信息系统 项目管理基础 项目整体管理 项目范围管理 项目进度管理 项目成本管理 项目质量管理 项目人力资源管理 项目沟通管理 项目干系人管理 项目风险…