最近公司里没什么任务,所以自己学了学DataBinding,在这分享一下我所学到的内容
1、启用DataBinding
现在的android studio基本上都配有DataBinding的依赖库,只不过我们在使用的时候需要启用而已在项目的build.gradle的android中加入这段代码
buildFeatures {
dataBinding = true
}
2、将布局转换成DataBinding布局
选择我们布局中的根布局,我的电脑是Mac,所以用的是option+回车,选择第一个,按下回车
这样布局就变成了DataBinding布局,接下来就是DataBinding的使用了
3、DataBinding使用
因为是我自己写的一个小项目,所以没加入MVVM来使用,我在这就重点说一下这个DataBinding点击事件的使用吧
<data>
<variable
name="click"
type="com.example.utils.MainActivity.ProxyClick" />
</data>
这个是在布局中声明的内容,在布局中声明这个内容时,在activity中也要有对应的方法
inner class ProxyClick{
fun goNewActivity(){
Log.e("TAG", "Go: ????" )
val intent = Intent(this@MainActivity,GuidelineActivity::class.java)
startActivity(intent)
}
}
这是activity中对应的方法其中这个goNewActivity方法是我给布局中控件加的一的点击方法
<ImageView
android:id="@+id/iv_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{()->click.goNewActivity()}"
app:layout_constraintTop_toBottomOf="@+id/tv_scroll"
app:layout_constraintLeft_toLeftOf="parent" />
这个就是布局中给imageview添加点击事件,android:onClick="@{()->click.goNewActivity()}"
这个是固定写法,click是你在上面data中声明的名字,后面这个goNewActivity()就是你在activity中声明的方法,
这样一个点击事件基本上就完成了,接下来就是在activity中绑定视图了
private val mDataBind : ActivityMainBinding by lazy {
DataBindingUtil.setContentView<ActivityMainBinding?>(this,R.layout.activity_main).apply {
click = ProxyClick()
}
}
我这使用的是kotlin,可能有些还在使用java的不是适应,在这我就不多声明了,这个ActivityMainBinding是系统自动生成的,他这个命名规则就是Activity+你activity的名字+Binding
.apply {
click = ProxyClick()
}
这个是把点击事件绑定在我们这个初始化出来的dataBinding上,然后就可以使用了,
我这个使用讲解的不是特别清晰,因为我也在学习中,我在这是分享一下我的心得,如果有什么问题,欢迎指正,谢谢
拜了个拜