效果:

一 依赖

implementation ‘com.google.android.material:material:1.0.0’

implementation ‘androidx.lifecycle:lifecycle-extensions:2.2.0’

二 启用

在build.gradle(app)中的testInstrumentationRunner上面添加一句

dataBinding.enabled= true

三 ViewModel

java:

private MutableLiveData<Integer> number;public MutableLiveData<Integer> getNumber() {if (number == null) {number = new MutableLiveData<>();number.setValue(0);}return number;}public void changednumber(Int newnumber) {number.setValue(number.getValue()+newnumber);}

kotlin:

private val _number:MutableLiveData<Int> by lazy { MutableLiveData<Int>(0) }//初始值为0var number=_numberfun changednumber(a:Int){_number.value= _number.value?.plus(a)}

四 xml绑定

主要内容:

<data><variablename="vm"type="com.example.mutablelivedata.MyViewModel" /></data>android:text="@{String.valueOf(vm.number)}"android:onClick="@{()->vm.changednumber(5)}"android:progress="@{vm.number}"

全部:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"><data><variablename="vm"type="com.example.kotlinmutablelivedata.MyViewModel" /></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/textone"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{String.valueOf(vm.number)}"android:textSize="30sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="+5"android:onClick="@{()->vm.changednumber(5)}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent" /><SeekBarandroid:id="@+id/seekBar"android:progress="@{vm.number}"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginBottom="32dp"android:max="15"app:layout_constraintBottom_toTopOf="@+id/textone"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
</layout>

五 活动中启用:

java:

binding = DataBindingUtil.setContentView(this,R.layout.activity_main);myViewModel =new ViewModelProvider(this).get(MyViewModel.class);binding.setVm(myViewModel);binding.setLifecycleOwner(this);

kotlin:

val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)val binding: ActivityMainBinding =DataBindingUtil.setContentView(this, R.layout.activity_main)binding.apply {vm = viewModel //设定对象lifecycleOwner = this@MainActivity //定义被观察者}

文章来源

java string转number_DataBinding的简单使用(java/kotlin)相关推荐

  1. java类成员初始化_简单了解Java类成员初始化顺序

    这篇文章主要介绍了简单了解Java类成员初始化顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类中包含7中成员: 1.静态变量 static 2 ...

  2. java应用开发_开发简单的Java应用

    第一章 开发简单的Java应用 1.Java语言的技术分类 (1)JavaSE:标准版,开发桌面应用 (2)JavaEE:企业版,Web应用 (3)JavaME:小型版,嵌入式 2.如何开发和运行Ja ...

  3. java string查找_查找输出程序(Java String类)

    java string查找 Program 1 程序1 public class iHelp {public static void main (String[] args) {System.out. ...

  4. java完成九宫格数独_简单实现java数独游戏

    本文实例为大家分享了java数独游戏的具体代码,供大家参考,具体内容如下 打算把javaFx需要的组件装好以后直接用javaFx的,但似乎eclipse的版本不对,安装了也不能用... 数独代码是在之 ...

  5. Java抽号系统_简单实现java抽奖系统

    简单实现java抽奖系统 发布于 2020-3-11| 复制链接 摘记: 本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下用户信息类 ```java /* * 用户信息类 * 1. ...

  6. java 序列化 例子_一个简单的Java序列化的例子

    简单来说序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O),我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对 ...

  7. java的同步关键字_简单了解Java synchronized关键字同步

    简单了解Java synchronized关键字同步 发布于 2021-1-13| 复制链接 摘记:  synchronized synchronized可以用来同步块,同步方法.同步块可以用来更精确 ...

  8. java string的作用_浅谈java String不可变的好处

    一.java内部String类的实现: java 8: public final class String implements java.io.Serializable, Comparable, C ...

  9. java笔试题_一道简单的 Java 笔试题,但值得很多人反思

    专注于Java领域优质技术,欢迎关注 作者:匿蟒 前言 面试别人,对我来说是一件新奇事,以前都是别人面试我.我清楚地知道,我在的地域与公司,难以吸引到中国的一流软件人才.所以,我特地调低了期望,很少问 ...

  10. java string改变的影响_为什么Java的string类要设成immutable(不可变的)

    最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类 ...

最新文章

  1. Windows Phone 7 Tip (13) -- 如何搜集应用使用数据
  2. 执行计划 分析一条sql语句的效率 mysql_mysql的SQL语句执行计划分析:EXPLAIN
  3. 城市大数据:内涵、服务架构与实施路径
  4. php将值作为数组,php – 如何将CSV解析为数组,并将第一个值作为键?
  5. 最全面的PS快捷键使用指南
  6. 软考中级网络工程师知识点笔记
  7. onblur onchange
  8. Modelsim与ISE联和仿真错误
  9. java实现置顶功能
  10. 学习游戏两不误 测机械革命钛钽Plus旗舰游戏本
  11. 使用阿里云服务器发送邮件
  12. IT咨询,从问题到主义
  13. LCD1602显示总结
  14. IBM TS3100磁带机更换磁带的方法
  15. 编程实用工具大全(二)(前后端皆可用,不来看看?)
  16. Windows 找不到文件 ‘chrome‘。请确认文件名是否正确后,再试一次。
  17. 精选(36) 常见的五种MySQL高可用方案分析
  18. MODIS数据下载、拼接、转tif
  19. 欣海关务工作室原创文章——锦囊妙计(八) 对外承包工程
  20. 如何解决磁盘坏道的问题

热门文章

  1. Java程序员们最常犯的10个错误
  2. 向设计师分享30个免费的扁平化风格设计素材
  3. 【LeetCode】【refine 1】题号:1. 两数之和
  4. 二维数组,字符串,字符数组
  5. RGB图像转到HSI图像
  6. day12--k近邻算法KNN
  7. Python学习总结(3)——数字类型
  8. arcpy 创建弧度制与十进制互换的个人工具箱
  9. jQuery-zTree插件使用
  10. android 可拖拽View的简单实现