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 giao diện người dùng các thành phần trong bố cục đến các nguồn dữ liệu trong ứng dụng bằng cách sử dụng hàm 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 có mã gọi khung giao diện người dùng
. Ví dụ: mã bên dưới gọi findViewById()
để tìm 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
vào tiện ích ngay trong tệp bố cục. Việc này giúp bạn không cần phải gọi bất kỳ
mã Java hiển thị ở trên. Lưu ý rằng việc sử dụng cú pháp @{}
trong bài tập
biểu thức:
<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 các hoạt động của bạn, giúp chúng trở nên đơn giản và dễ duy trì 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 chặn lỗi rò rỉ bộ nhớ cũng như con trỏ rỗng ngoại lệ.
Sử dụng Thư viện liên kết dữ liệu
Hãy xem 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.
- Bắt đầu
- Tìm hiểu cách chuẩn bị sẵn sàng cho môi trường phát triển để làm việc với Dữ liệu Thư viện liên kết, bao gồm cả tính năng hỗ trợ mã liên kết dữ liệu trong Android Studio.
Ngôn ngữ biểu thức cho phép bạn viết biểu thức kết nối vào các chế độ xem 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 thành phần hiển thị trong bố cục với dữ liệu của bạn . Thư viện này cung cấp các tính năng như nhập, biến và bao gồm dữ liệu 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 các bố cục hiện có của bạn.
Ví dụ: các biến liên kết có thể được sử dụng trong biểu thức được xác định
bên trong một phần tử data
là thành phần đồ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ạ sau đây
ví dụ:
<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 các thay đổi về nguồn dữ liệu cơ bản. Bạn có thể tạo các biến hoặc thuộc tính có thể quan sát được. Thư viện này cho phép bạn tạo đối tượng, trường hoặc tập hợp có thể quan sát được.
- 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 hướng dẫn bạn cách sử dụng và tuỳ chỉnh các lớp liên kết được tạo.
- Bộ chuyển đổi liên kết
- Mỗi biểu thức bố cục đều có một bộ chuyển đổi liên kết giúp
bắt buộc phải có lệnh gọi khung để đặt các thuộc tính hoặc trình nghe tương ứng. Cho
Ví dụ: phương thức điều hợp liên kết (binding adapter) có thể đảm nhận 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ứcsetOnClickListener()
để thêm thuộc tính trình nghe sự kiện nhấp chuột. 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ínhandroid:text
được dùng trong các ví dụ trên trang này, có sẵn để bạn dùng trong góiandroid.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 khung hiển thị bố cục với Thành phần cấu trúc
- Thư viện hỗ trợ Android bao gồm Cấu trúc Các thành phần mà bạn có thể dùng để thiết kế các ứng dụng mạnh mẽ, có thể kiểm thử và bảo trì. Bạn có thể sử dụng thẻ Cấu trúc Các thành phần có Thư viện liên kết dữ liệu để đơn giản hoá quá trình phát triển hơn nữa của 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 tài sản và theo dõi thông tin cập nhật của người dùng về tài sản đó cùng một lúc.
Tài nguyên khác
Để tìm hiểu thêm về liên kết dữ liệu, hãy tham khảo các tài nguyên khác.
Mẫu
Lớp học lập trình
Bài đăng trên blog
Đề xuất cho bạn
- Lưu ý: văn bản có đường liên kết sẽ hiện khi JavaScript tắt
- Bộ chuyển đổi liên kết {:#binding-Adapters}
- Bố cục và biểu thức liên kết
- Các lớp liên kết đã tạo {: #binding-classes}