日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Databinding学习

發(fā)布時(shí)間:2024/4/11 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Databinding学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


一、啟用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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。