DataBinding(三) — BaseObservable,
2023-06-11 本文已影响0人
奔跑的佩恩
前言
在之前的文章中,我们讲到了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效果图.gif
ObservableField效果图.gif
一. 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代码: