Android - 双向绑定
文章目录
- 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 - 双向绑定相关推荐
- android实现双向绑定,Android使用DataBinding实现双向绑定(一)
前面一段时间学习了一下Android中的DataBinding,但是只是很简单地实现了一下,DataBinding中最强大的地方还没有认真地学习过,有很多地方还不理解.这次,深入学习一下DataBin ...
- android——databinding中字符串的拼接处理、TextView显示的值随activity的属性值改变同时改变--LiveData、双向绑定过滤器、监听某个值的改变
简介 使用的技术是观察者与被观察者的模式,在google推荐的案例中也有使用到,现在我把它封装成一个扩展函数,使得使用更加简单明了 注意 1.在build.gradle添加databinding,在a ...
- Android databinding之数据单向与双向绑定详解与使用(三)
一.介绍 通过前面两篇文档,我们大概了解了databinding的工作方式,view的初始化,recycleview的使用.但是这些UI都离不开数据的填充,数据的修饰. 在说到数据绑定,好多开发者平时 ...
- Android架构探究之Data Binding双向绑定
Android架构探究之Data Binding双向绑定 0. 对Data Binding的基本使用和概念可阅读下面链接 1. 什么是双向绑定?双向绑定和单项绑定的区别? 2. 举例说明 editTe ...
- Android开发提升效率之DataBinding——双向绑定
DataBingding Android开发提升效率之DataBinding--基本使用 Android开发提升效率之DataBinding--进阶开发 Android开发提升效率之DataBindi ...
- Android DataBinding双向绑定原理
Android中的双向绑定是指:将Model设置给View之后,当Model中的数据发生改变时,View显示的内容也会随之改变:当View发生变化时,Model中的数据也会随之改变.双向绑定可以让开发 ...
- Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9671609 记得在很早之前,我写了一篇关于Android滑动菜单的文章,其中有一个 ...
- DataBinding的双向绑定实现原理
" 悄悄咪咪告诉你,DataBinding是怎么实现双向绑定的" 在讲DataBinding之前,有必要讲讲ViewBinding 1.ViewBinding 1) 配置 要使用V ...
- Andriod --- JetPack (四):BaseObservable 与 ObservableField 双向绑定
1.Andriod - JetPack (一):初识 JetPack 2.Andriod - JetPack (二):LifeCycle 的诞生 3.Andriod - JetPack (三):Vie ...
最新文章
- 【通知】2020年有三AI-CV夏季划升级,更多项目,更高难度,更加落地
- Report20201016 benchmark vs袁颖 PANTHER初步模拟结果
- 剑与远征赏金试炼活动将在13天后结束,工会玩法大家有尝试过吗?
- HttpDNS与传统DNS的区别
- SyncNavigator 注册机 使用教程
- discuz php文件,discuz目录文件资料汇总
- python实战,教你用微信每天给女朋友说晚安
- libjpeg: cannot open
- LeetCode 485. Max Consecutive Ones
- Android学习之反编译工具的使用
- C#中的表达式与运算符
- gnss rtcm rtklib Ntrip...
- exe dll html病毒专杀,清除更改主页的mshtmldy.dll、mshtmldx.dll病毒
- 蝉道Bug管理工具的环境搭建
- 用Watir测试QTP的Demo程序Mercury Tours
- 可以缩放平移的时间刻度尺,方便自定义UI需求。仿萤石云历史录像时间轴
- 推荐一个查询研究者方向和影响力的网站| 也可以查询杂志是否有专刊开放
- 人工智能,达尔文进化论
- 微信已发图片群里服务器撤回,怎样撤回微信群发的信息?撤不回怎么办?
- RN TSX基于react-native-vector-icons和iconfont.cn 的生成自定义Icon组件的工具
热门文章
- 【机器学习】李宏毅——自监督式学习
- Debian下载内核源码的方法
- ivue-admin中自定义图标问题进行处理
- 如何完成微信小程序的登录功能
- 王者荣耀微信一区的服务器没了,王者荣耀微信区不出现保存回放 | 手游网游页游攻略大全...
- python 图像识别游戏_基于Python的浏览器图像识别
- < 每日算法 - Javascript解析:经典弹珠游戏 >
- 惊悚恐怖好片推荐(喜欢看片的朋友们看过来)
- 发表说说代码php,PHP随机发送QQ说说[多用户]
- Unable to start service Intent U=0: not found