今天开始做新项目,在里面加了各种东西,比如databing,因为用的是mvvm,自身从来没有用过今天只好从零开始。
先在app的build.gradle里面加上
dataBinding {
enabled = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
为啥要加上下面的complieOption呢,不加上回报错的,报版本低。到此可以用上了。
这里不解释mvvm写法,可以百度,
直接上布局
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="base" type="com.business.sbl.model.bean.BaseTitleBean"/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="@color/white">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@{base.title}"
/>
<ImageView
android:id="@+id/img_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</layout>
顶层直接是layout了,里面是data包裹,在里面是variable,data设置数据,相当于get、set variable就是命名,name可以随便都可以,type就是你自己的类名了。
怎么用呢
activity中
private lateinit var mBinding: ActivityMainBinding
override fun initViews(savedInstanceState: Bundle?) {
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
}
activityMainBinding是系统生成的,可以自己改名
fragment中
private lateinit var mBinding: FragmentMerchantsBinding
private lateinit var mMerchantsViewModel: MerchantViewModel
override fun initViews() {
mBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_merchants,null,false)
v= mBinding.root
}
都差不多用法,这里的v是view在oncreateview 返回的view封装好的,继承一个basefragment,返回的view。
这里就是简单的介绍怎么使用databinding,怎么布局的