Android-jetpack系列之初探DataBinding

137 阅读1分钟

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 
    }
}
5. 实现效果

在这里插入图片描述