文章目录

  • 1. 添加绑定设置
  • 2. 添加数据类
  • 3. 添加ViewModel
  • 4. activity_main.xml添加绑定
  • 5. MainActivity.java添加绑定
  • 6. 运行
  • 7. 示例代码

1. 添加绑定设置

如上一篇文章(Android - DataBinding)一样,在 build.gradle 中添加

buildFeatures{dataBinding true
}

2. 添加数据类

添加数据类 User.java

public class User {public String userName;public User(String userName) {this.userName = userName;}
}

3. 添加ViewModel

添加 UserViewModel.java

public class UserViewModel {private ObservableField<User> userObservableField;public UserViewModel() {User user = new User("Jack");userObservableField = new ObservableField<>();userObservableField.set(user);}public String getUserName(){return userObservableField.get().userName;}public void setUserName(String userName){Log.d("UserViewModel", "userObservableField: " + userName);userObservableField.get().userName = userName;}
}

4. activity_main.xml添加绑定

<?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.example.databinding2.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="wrap_content"tools:text="用户名"android:text="@={userViewModel.userName}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
</layout>

5. MainActivity.java添加绑定

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());}
}

6. 运行


输入框输入改变,能看到日志打印的数据也跟着改变了。数据改变的时候,输入框的内容也会改变的,这里没有演示出来。

7. 示例代码

https://gitee.com/jie-xio/android_samples/tree/master/DataBinding/DataBinding2

Android - 双向绑定相关推荐

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

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

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

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

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

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

  4. Android架构探究之Data Binding双向绑定

    Android架构探究之Data Binding双向绑定 0. 对Data Binding的基本使用和概念可阅读下面链接 1. 什么是双向绑定?双向绑定和单项绑定的区别? 2. 举例说明 editTe ...

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

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

  6. Android DataBinding双向绑定原理

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

  7. Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9671609 记得在很早之前,我写了一篇关于Android滑动菜单的文章,其中有一个 ...

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

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

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

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

最新文章

  1. 【通知】2020年有三AI-CV夏季划升级,更多项目,更高难度,更加落地
  2. Report20201016 benchmark vs袁颖 PANTHER初步模拟结果
  3. 剑与远征赏金试炼活动将在13天后结束,工会玩法大家有尝试过吗?
  4. HttpDNS与传统DNS的区别
  5. SyncNavigator 注册机 使用教程
  6. discuz php文件,discuz目录文件资料汇总
  7. python实战,教你用微信每天给女朋友说晚安
  8. libjpeg: cannot open
  9. LeetCode 485. Max Consecutive Ones
  10. Android学习之反编译工具的使用
  11. C#中的表达式与运算符
  12. gnss rtcm rtklib Ntrip...
  13. exe dll html病毒专杀,清除更改主页的mshtmldy.dll、mshtmldx.dll病毒
  14. 蝉道Bug管理工具的环境搭建
  15. 用Watir测试QTP的Demo程序Mercury Tours
  16. 可以缩放平移的时间刻度尺,方便自定义UI需求。仿萤石云历史录像时间轴
  17. 推荐一个查询研究者方向和影响力的网站| 也可以查询杂志是否有专刊开放
  18. 人工智能,达尔文进化论
  19. 微信已发图片群里服务器撤回,怎样撤回微信群发的信息?撤不回怎么办?
  20. RN TSX基于react-native-vector-icons和iconfont.cn 的生成自定义Icon组件的工具

热门文章

  1. 【机器学习】李宏毅——自监督式学习
  2. Debian下载内核源码的方法
  3. ivue-admin中自定义图标问题进行处理
  4. 如何完成微信小程序的登录功能
  5. 王者荣耀微信一区的服务器没了,王者荣耀微信区不出现保存回放 | 手游网游页游攻略大全...
  6. python 图像识别游戏_基于Python的浏览器图像识别
  7. < 每日算法 - Javascript解析:经典弹珠游戏 >
  8. 惊悚恐怖好片推荐(喜欢看片的朋友们看过来)
  9. 发表说说代码php,PHP随机发送QQ说说[多用户]
  10. Unable to start service Intent U=0: not found