Android-jetpack系列之初探DataBinding
1.介绍
DataBinding是一个用于将数据绑定到应用界面布局文件中view元素的组件,能够避免我们手动重复逻辑,例如findViewById、setText等。
2.用法
1. 开启databinding
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled true
}
2. 创建布局并转换为Databinding布局
1)创建布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/dp_10"
>
<TextView
android:id="@+id/text_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:textSize="26sp"
android:textColor="@android:color/black"
app:layout_constraintBottom_toBottomOf="parent"
/>
<TextView
android:id="@+id/text_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/text_name"
android:textSize="26sp"
android:textColor="@android:color/black"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
2)小技巧准换布局,右键跟布局选中第一个
3)还是选中第一个点击
3. 创建实体类并引入
class Student(var name:String,var age:Int) {
}
<?xml version="1.0" encoding="utf-8"?>
<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>
<variable
name="student"
type="com.ruibetter.Student" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/text_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="@{user.name}"
android:textSize="26sp"
android:textColor="@android:color/black"
app:layout_constraintBottom_toBottomOf="parent"
/>
<TextView
android:id="@+id/text_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/text_name"
android:text="@{String.valueOf(user.age)}"
android:textSize="26sp"
android:textColor="@android:color/black"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
4. Activity中设置
1)用DatabindingUtil绑定布局,返回一个ActivityMainBinding这个名字是系统自动生成的,以你布局文件的命名首字母大写并在末尾加上Binding
2)绑定student
class MainActivity : AppCompatActivity() {
private lateinit var activityMainBinding: ActivityMainBinding
private val student = Student("小红", 10)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
activityMainBinding.student = student
}
}