一:配置DataBinding
主模块的build.gradle
apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android-extensions'
android { ... dataBinding { enabled = true } kapt { generateStubs = true } }
dependencies { ... kapt "com.android.databinding:compiler:3.1.1" }
新建一个Activity名叫UserActivity,一个layout文件叫做activity_user,一个Bean文件叫做User
layout文件如下
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type="com.test.bean.User" /> </data> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.TextInputLayout android:layout_width="50dp" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="30dp" android:layout_marginTop="50dp"> <android.support.design.widget.TextInputEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="hint" /> </android.support.design.widget.TextInputLayout> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="30dp" android:layout_marginTop="100dp" android:text="@{String.valueOf(user.name)}" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView" android:layout_marginStart="30dp" android:layout_marginTop="100dp" android:text="@{Int.valueOf(user.age)}"/> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView2" android:layout_marginStart="30dp" android:layout_marginTop="100dp" android:text="@{String.valueOf(user.entnicity)}"/> </RelativeLayout> </layout>
bean文件如下
package com.test.bean class User { var name: String? = null var age: Int? = null var ethnicity: String? = null }
Activity如下
package com.test.activity import android.app.Activity import android.databinding.DataBindingUtil import android.os.Bundle import com.choice.choiceplayer.R import com.choice.choiceplayer.bean.User import com.choice.choiceplayer.databinding.LayoutUserInfoBinding class UserActivity : Activity() { var layoutUserInfo:LayoutUserInfoBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) layoutUserInfo=DataBindingUtil.setContentView(this@UserActivity, R.layout.layout_user_info) val user=User() user.name="Erone Choi" user.age=26 user.ethnicity="朝鲜族" layoutUserInfo.setVariable(0,user) } }
需要注意的点:
xml里的bean的属性名要写正确,不然就会报kaptDebugKotlin或could not find accessor...等错误