Android Databinding学习
一、啟用Databinding
android {
? ? dataBinding {
? ? ? ? enabled = true
? ? }
}
二、xml布局文件
<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 class=".LoginActivityBinding">
? ? ? ? <!--需要的viewModel,通過mBinding.vm=mViewMode注入-->
? ? ? ? <variable
? ? ? ? ? ? name="model"
? ? ? ? ? ? type="com.cn21.hellokotlin.model.LoginModel" />
? ? </data>
? ? <LinearLayout .../>
? ??
界面加載:
?bind = DataBindingUtil.setContentView(this, R.layout.login_activity)
?bind!!.model = loginModel
?
三、數(shù)據(jù)Bean類
繼承 BaseObservable
在get方法上加入@Bindable注解后,DataBinding就會(huì)在BR文件中生成相應(yīng)的字段,BR是編譯期間生成的類,類似于R文件。
屬性值修改時(shí),調(diào)用通知:
notifyPropertyChanged(BR.name)
如果提示找不到BR類,作如下配置:
apply plugin: "kotlin-kapt"
kapt {
? ? generateStubs = true
}
//版本要與gradle版本一致
kapt ?"com.android.databinding:compiler:3.5.3"
四、數(shù)據(jù)變更時(shí),會(huì)自動(dòng)同步UI
private fun doRandomTimer() {
? ? ? ? GlobalScope.launch {
? ? ? ? ? ? val random = Random()
? ? ? ? ? ? repeat(10){
? ? ? ? ? ? ? ? delay(1000)
? ? ? ? ? ? ? ? bind?.model?.setName( "name_${random.nextInt(10)}" )
? ? ? ? ? ? ? ? bind?.model?.setPhone( "${random.nextInt()}" )
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ??
更新綁定語法: ? ?https://www.jianshu.com/p/e4c4a9aece40
五、ViewModel使用:
viewModel = ViewModelProviders.of(this).get(DubbyActivity2ViewModel::class.java)會(huì)自動(dòng)綁定到當(dāng)前的Fragment或者Activity, 界面退出時(shí)會(huì)調(diào)用 viewModel.onCleard()
總結(jié)
以上是生活随笔為你收集整理的Android Databinding学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android协程学习
- 下一篇: Charles+Android模拟器里抓