1、在build.gradle中添加dataBinding

dataBinding{enabled = true
}
plugins {id 'com.android.application'
}android {compileSdk 32defaultConfig {applicationId "com.nyw.databindingeditview"minSdk 21targetSdk 32versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"dataBinding{enabled = true}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}
}dependencies {implementation 'androidx.appcompat:appcompat:1.3.0'implementation 'com.google.android.material:material:1.4.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.13.2'androidTestImplementation 'androidx.test.ext:junit:1.1.3'androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

2、activity代码

package com.nyw.databindingeditview;import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;import android.os.Bundle;import com.nyw.databindingeditview.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);ActivityMainBinding activityMainBinding= DataBindingUtil.setContentView(this,R.layout.activity_main);activityMainBinding.setUserViewModel(new UserViewModel());}
}

3、User类代码

package com.nyw.databindingeditview;public class User {public String name;public User(String name) {this.name = name;}
}
4、UserViewModel类代码 ,我们使用了ObservableField方式实现,推荐使用这种方式更简单
package com.nyw.databindingeditview;import android.util.Log;import androidx.databinding.BaseObservable;
import androidx.databinding.Bindable;
import androidx.databinding.ObservableField;public class UserViewModel{private ObservableField<User> observableField;public UserViewModel() {User user=new User("张三");observableField=new ObservableField<>();observableField.set(user);}public String getName(){return observableField.get().name;}public String setName(String name){Log.d("print_txt_msg",name);return  observableField.get().name=name;}
}

5、页面代码如下

<?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="userViewModel"type="com.nyw.databindingeditview.UserViewModel"/></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><EditTextandroid:layout_width="match_parent"android:layout_height="80dp"android:text="@={userViewModel.name}"android:hint="请输入内容"tools:ignore="MissingConstraints" /></androidx.constraintlayout.widget.ConstraintLayout>
</layout>

android dataBinding 与ObservableField实现双向绑定相关推荐

  1. DataBinding使用指南(一)DataBinding基本使用,双向绑定,ListView RecycleView使用

    databing使用指南 简介 简单使用 双向绑定 ListView.RecycleView中的使用 . ListView ListView 中数据的简单展示 数据源改变后数据更新方式 . Recyc ...

  2. DataBinding的使用之双向绑定

    DataBinding的双向绑定,可以实现控件和数据的双向绑定,比如在登陆场景下,如果你使用了一个UserModel来保存数据,当你修改UserModel中的字段时,Edittext会自动更新.并且, ...

  3. Android开发提升效率之DataBinding——双向绑定

    DataBingding Android开发提升效率之DataBinding--基本使用 Android开发提升效率之DataBinding--进阶开发 Android开发提升效率之DataBindi ...

  4. DataBinding的双向绑定实现原理

    " 悄悄咪咪告诉你,DataBinding是怎么实现双向绑定的" 在讲DataBinding之前,有必要讲讲ViewBinding 1.ViewBinding 1) 配置 要使用V ...

  5. android实现双向绑定,Android使用DataBinding实现双向绑定(一)

    前面一段时间学习了一下Android中的DataBinding,但是只是很简单地实现了一下,DataBinding中最强大的地方还没有认真地学习过,有很多地方还不理解.这次,深入学习一下DataBin ...

  6. android——databinding中字符串的拼接处理、TextView显示的值随activity的属性值改变同时改变--LiveData、双向绑定过滤器、监听某个值的改变

    简介 使用的技术是观察者与被观察者的模式,在google推荐的案例中也有使用到,现在我把它封装成一个扩展函数,使得使用更加简单明了 注意 1.在build.gradle添加databinding,在a ...

  7. Android databinding之数据单向与双向绑定详解与使用(三)

    一.介绍 通过前面两篇文档,我们大概了解了databinding的工作方式,view的初始化,recycleview的使用.但是这些UI都离不开数据的填充,数据的修饰. 在说到数据绑定,好多开发者平时 ...

  8. Android DataBinding双向绑定原理

    Android中的双向绑定是指:将Model设置给View之后,当Model中的数据发生改变时,View显示的内容也会随之改变:当View发生变化时,Model中的数据也会随之改变.双向绑定可以让开发 ...

  9. Andriod --- JetPack (四):BaseObservable 与 ObservableField 双向绑定

    1.Andriod - JetPack (一):初识 JetPack 2.Andriod - JetPack (二):LifeCycle 的诞生 3.Andriod - JetPack (三):Vie ...

最新文章

  1. linux怎么获取当前路径,linux 下获取当前工作路径的实例
  2. Python 技术篇 - 使用unicode_escape对js的escape()方法编码后的字符串进行解码实例演示
  3. 【C++】利用Visual Studio 2008编写C++,Visual Studio 2008的基本使用
  4. oracle数据库中对varchar类型求max的解决方法
  5. [cocos2dx笔记010]用于UI的事件管理器
  6. Win7下使用U盘安装linux Ubuntu16.04双系统图文教程
  7. STM32 SPI NSS 作用
  8. TensorFlow入门(1)
  9. 手把手教你利用微软的Bot Framework,LUIS,QnA Maker做一个简单的对话机器人
  10. Ipopt安装【Ubuntu18.04】XAVIER(ARM架构)
  11. IOS YYKit 源码解析
  12. .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  13. 初级开发人员的缺点_成为成功的初级开发人员的10条最佳建议
  14. nginx防恶意刷新
  15. linux 命令:which详解
  16. WebGL简易教程(五):图形变换(模型、视图、投影变换)
  17. 软件测试工程师简历项目经验怎么写(含真实简历)
  18. 全国智能制造(中国制造2025)创新创业大赛华北赛区决赛完美收官
  19. ELECTRONICON E62-C58-102E40
  20. HTML中em标签的用法

热门文章

  1. 狗狗变形记:任选4点的投影变换warpPerspective OpenCV-Python案例
  2. 唠唠MySQL的join
  3. 【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可
  4. 深入理解Linux网络技术内幕(十)——帧的接收
  5. Opensips+Freeswitch负载均衡
  6. CSS实现图片文字排版02
  7. 焦距 对焦 变焦--摄影基础理论(3)
  8. Google Earth Engine APP——UI地图加载一个高程显示标签并显示高程案例
  9. linux里面编译LZO
  10. 一套比较完备的在ubuntu 18.04系统上部署nginx+postgresql+php的记录