Thư viện liên kết dữ liệu Một phần của Android Jetpack.

Thư viện liên kết dữ liệu là một thư viện hỗ trợ cho phép bạn liên kết các thành phần giao diện người dùng trong bố cục với các nguồn dữ liệu trong ứng dụng bằng cách sử dụng định dạng khai báo thay vì theo phương thức lập trình.

Bố cục thường được xác định trong các hoạt động bằng mã gọi phương thức khung giao diện người dùng. Ví dụ: mã bên dưới gọi findViewById() để tìm một tiện ích TextView và liên kết tiện ích đó với thuộc tính userName của biến viewModel:

Kotlin

findViewById<TextView>(R.id.sample_text).apply {
    text = viewModel.userName
}

Java

TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());

Ví dụ sau cho thấy cách sử dụng Thư viện liên kết dữ liệu để gán văn bản cho tiện ích trực tiếp trong tệp bố cục. Việc này giúp bạn không cần gọi bất cứ mã Java nào nêu trên. Lưu ý rằng bạn có thể sử dụng cú pháp @{} trong biểu thức chỉ định:

<TextView
    android:text="@{viewmodel.userName}" />

Việc liên kết các thành phần trong tệp bố cục cho phép bạn xoá nhiều lệnh gọi khung giao diện người dùng trong hoạt động, giúp duy trì các thành phần này đơn giản và dễ dàng hơn. Việc này cũng có thể cải thiện hiệu suất của ứng dụng và giúp ngăn ngừa rò rỉ bộ nhớ cũng như ngoại lệ về con trỏ rỗng.

Sử dụng Thư viện liên kết dữ liệu

Sử dụng các trang sau để tìm hiểu cách sử dụng Thư viện liên kết dữ liệu trong ứng dụng Android của bạn.

Bắt đầu
Tìm hiểu cách chuẩn bị sẵn sàng môi trường phát triển để làm việc với Thư viện liên kết dữ liệu, bao gồm cả tính năng hỗ trợ mã liên kết dữ liệu trong Android Studio.

Bố cục và biểu thức liên kết

Ngôn ngữ biểu thức cho phép bạn viết các biểu thức kết nối các biến với khung hiển thị trong bố cục. Thư viện liên kết dữ liệu tự động tạo các lớp cần thiết để liên kết khung hiển thị trong bố cục với đối tượng dữ liệu của bạn. Thư viện này cung cấp các tính năng như tính năng nhập, biến và các tính năng mà bạn có thể sử dụng trong bố cục của mình.

Các tính năng này của thư viện cùng tồn tại liền mạch với bố cục hiện có của bạn. Ví dụ: các biến liên kết có thể dùng trong biểu thức được xác định bên trong phần tử data là phần tử đồng cấp với phần tử gốc của bố cục giao diện người dùng. Cả hai phần tử đều được gói trong một thẻ layout, như minh hoạ trong ví dụ sau:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
        <variable
            name="viewmodel"
            type="com.myapp.data.ViewModel" />
    </data>
    <ConstraintLayout... /> <!-- UI layout's root element -->
</layout>

Làm việc với các đối tượng dữ liệu có thể quan sát
Thư viện liên kết dữ liệu cung cấp các lớp và phương thức để dễ dàng quan sát dữ liệu cho các thay đổi. Bạn không phải lo lắng về việc làm mới giao diện người dùng khi nguồn dữ liệu cơ sở thay đổi. Bạn có thể làm cho biến hoặc thuộc tính của biến có thể quan sát được. Thư viện này cho phép bạn quan sát được các đối tượng, trường hoặc bộ sưu tập.
Các lớp liên kết được tạo
Thư viện liên kết dữ liệu tạo các lớp liên kết dùng để truy cập vào các biến và khung hiển thị của bố cục. Trang này cho bạn biết cách sử dụng và tuỳ chỉnh các lớp liên kết đã tạo.
Các bộ chuyển đổi liên kết
Đối với mỗi biểu thức bố cục, có một bộ chuyển đổi liên kết để thực hiện các lệnh gọi khung để đặt các thuộc tính hoặc trình nghe tương ứng. Ví dụ: bộ chuyển đổi liên kết có thể đảm nhiệm việc gọi phương thức setText() để đặt thuộc tính văn bản hoặc gọi phương thức setOnClickListener() để thêm trình nghe sự kiện nhấp chuột. Bạn có thể sử dụng các bộ chuyển đổi liên kết phổ biến nhất, chẳng hạn như các bộ chuyển đổi cho thuộc tính android:text được dùng trong các ví dụ trên trang này trong gói android.databinding.adapters. Để biết danh sách các bộ chuyển đổi liên kết phổ biến, hãy xem bộ chuyển đổi. Bạn cũng có thể tạo bộ chuyển đổi tuỳ chỉnh, như trong ví dụ sau:

Kotlin

@BindingAdapter("app:goneUnless")
fun goneUnless(view: View, visible: Boolean) {
    view.visibility = if (visible) View.VISIBLE else View.GONE
}

Java

@BindingAdapter("app:goneUnless")
public static void goneUnless(View view, Boolean visible) {
    view.visibility = visible ? View.VISIBLE : View.GONE;
}

Liên kết chế độ xem bố cục với Thành phần kiến trúc
Thư viện hỗ trợ Android bao gồm Thành phần kiến trúc. Bạn có thể dùng thành phần này để thiết kế những ứng dụng mạnh mẽ, có thể kiểm thử và bảo trì. Bạn có thể sử dụng Thành phần cấu trúc với Thư viện liên kết dữ liệu để đơn giản hoá quá trình phát triển giao diện người dùng.
Liên kết dữ liệu hai chiều
Thư viện liên kết dữ liệu hỗ trợ liên kết dữ liệu hai chiều. Ký hiệu dùng cho loại liên kết này hỗ trợ khả năng nhận các thay đổi về dữ liệu đối với một thuộc tính và theo dõi nội dung cập nhật của người dùng đối với thuộc tính đó cùng lúc.