前言
在之前的文章中,我们讲到了DataBinding
加载图片,想了解的可以参看以下文章:
DataBinding(一) — 基本使用
DataBinding(二) — 加载图片
今天让我们来学习下DataBinding
的双向数据绑定。
-
BaseObservable
实现数据双向绑定
1.1 新建User
类kotlin
上的Parcelable
序列化
1.2 继承BaseObservable
实现双向数据绑定
1.3DataBinding
双向绑定在MainActivity
中的使用
1.4BaseObservable
效果图 -
ObservableField
实现数据双向绑定
2.1ObservableField
实现数据双向绑定
2.2xml
中使用变化
2.3MainActivity
中调用
2.4ObservableField
效果图
先来波效果图
一. BaseObservable实现数据双向绑定
1.1 新建 User 类 kotlin 上的 Parcelable 序列化
最开始当然是DataBinding
的库引用了,之前讲过,这里不做赘述。
这里我们以名字在EditText
中实时变化为例。
新建一个User
类,其中有一个属性name
。先来看看实体类User
如何实现Parcelable
序列化。
在app_module
对应的build.gradle
头部的plugins
引用中添加Parcelable
序列化插件:
plugins {
id 'kotlin-parcelize' //序列化bean的Parcelable插件
//其他代码省略
//......
}
然后实体类User
类头部加上@Parcelable
注解并 继承Parcelable
,User
代码如下:
package com.ktdemo.entity
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
* Title:
* description:
* autor:pei
* created on 2023/4/12
*/
@Parcelize
class User() : Parcelable{
var name :String?=null
constructor(name:String?) : this() {
this.name=name
}
}
1.2 继承BaseObservable
实现双向数据绑定
BaseObservable
是dataBinding
一套中的组件,其功能是建立View
和Model
间的数据通讯,作用上类似LifeCycle
系统中的ViewModel
。
先建一个UserObservable
继承自BaseObservable
,并在其中引用User
实体类,并做实现双向数据绑定的处理。下面贴出UserObservable
代码: