MVVM模式引入双向绑定。
-
首先,看一看MVVM的模式的图示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201108124734892.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjUxNDE2Mg==,size_16,color_FFFFFF,t_70#pic_center -
看一下,数据绑定的示例
- 首先,在build-gradle中允许数据绑定
dataBinding{
enabled = true
}
- 在主活动中设置模型
import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.widget.Toast
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import com.example.my_view.databinding.MainActivityBinding
import kotlinx.android.synthetic.main.main_activity.*
//模型类
class User(var name:String, var age:Int){
fun onClick():Unit{
println("测试")
}
}
class MainActivity :Activity() {
var mBinding :MainActivityBinding? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
//创建对象数据
val user1:User = User("刘一雷", 21)
//绑定对应的视图
mBinding = DataBindingUtil.setContentView<MainActivityBinding>(this, R.layout.main_activity)
//赋值
mBinding!!.vm = user1
}
}
- 页面代码如下:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<data>
<variable
name="vm"
type="com.example.my_view.User" />
</data>
<!--加入文本和触摸触发事件-->
<TextView
android:id="@+id/text5"
android:layout_width="match_parent"
android:layout_height="80dp"
android:text="@{vm.name}"
android:gravity="center"
android:onClick="@{()->vm.onClick()}"
/>
</layout>