第一次使用DataBinding
1,在build.gradle 里面添加如下代码
android { ... dataBinding { enabled = true } }
2,在layout 新建layout 这里为了方便使用test.xml 中使用<layout></layout>标签为root
3,在test.xml中添加Bean 引用例如:
<data> <variable name="user" type="com.mvvmfactory.UserModel"/> </data>
name :类的名字
type:具体的bean类
在layout里面一定要包括一个view或者是布局,否则在编译时会出错
4.重新构建工程,AS会在app/build/intermaediates/classes/debug/包名/databinding/自动生成TestBing.class在绑定的时候全用到(一定要做,否则在引用的时候提示找不到类)
5.绑定:
var binding = DataBindingUtil.setContentView<TestBinding>(this@DataBindingActivity,R.layout.test) var userModel=UserModel(); userModel.username="hello word" binding.user = userModel
以上为一个简单的DataBinding例子
原码如下:
test.xml
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" > <data> <variable name="user" type="com.mvvmfactory.UserModel"/> </data> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.username}"/> </LinearLayout> </layout>
UserModel.java
class UserModel { constructor() var username:String="" get() = field set(value) {field =value} var userpwd:String="" get() = field set(value) {field = value} }
便用kotlin构建项目里会发生:Unresolved reference: databinding里在build.gradle 里面添回代码
dependencies { kapt 'com.android.tools.build:gradle:3.1.2' } kapt { generateStubs = true }
kapt为项目本身对于gradle的版本