CHƯƠNG 1 – VIEW BINDING1.1 Khái niệm của view bindingViewBinding là một thành phần trong Android Jetpack, nó giúp ta xóa bỏ bước findViewBindID trong quá trình code bằng các tạo ra các c
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO GIỮA KÌ
TÌM HIỂU VỀ VIEW BINDING VÀ DATA BINDING
Người hướng dẫn: THẦY TRẦN ĐẠI NHÂN Người thực hiện: NGUYỄN PHÚC BẢO DANH – 52000193
HUỲNH HUỲNH ĐỨC – 52000197 NGUYỄN THANH QUÍ – 52000511
Lớp : 20050301 Khoá : 24 THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022
Trang 2TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO GIỮA KÌ
TÌM HIỂU VỀ VIEW BINDING VÀ DATA BINDING
Người hướng dẫn: THẦY TRẦN ĐẠI NHÂN Người thực hiện: NGUYỄN PHÚC BẢO DANH – 52000193
HUỲNH HUỲNH ĐỨC – 52000197 NGUYỄN THANH QUÍ – 52000511
Lớp : 20050301 Khoá : 24 THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022
LỜI CẢM ƠN
Trang 3Chúng em xin chân thành cảm ơn thầy Trần Đại Nhân đã cung cấp đủ kiến thức trên lớp và hổ trợ chúng em trong quá trình hoàn thành bài báo cáo giữa kỳ một cách tốt nhất có thể ạ
Chúng em xin cảm ơn ạ!
Trang 4CÔNG TRÌNH ĐƯỢC HOÀN THÀNH
TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự hướng dẫn khoa học của thầy Trần Đại Nhân; Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Ngoài ra, trong luận văn còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm
về nội dung luận văn của mình Trường đại học Tôn Đức Thắng không liên quan đến
những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)
TP Hồ Chí Minh, ngày 12 tháng 12 năm
Tác giả (ký tên và ghi rõ họ tên)
Nguyễn Phúc Bảo Danh
Huỳnh Huỳnh Đức
Nguyễn Thanh Quí
Trang 5TÓM TẮT
Đây là báo cáo giữa kỳ Phát triển ứng dung di động với đề tài: “Tìm hiểu về View Binding và Data Binding” Bài báo cáo là nội dung được tìm hiểu qua nghiên cứu
về đề tài này
Trang 6MỤC LỤC
CHƯƠNG 1 – VIEW BINDING 2
1.1 Khái niệm của view binding 2
1.2 Các tính năng liên kết trong Android Studio 2
1.3 Sử dụng View Binding an toàn 3
1.4 Các bước thực hiện 3
CHƯƠNG 2 – DATA BINDING 5
2.1 Khái niệm của Data Binding 5
2.2 Để sử dụng Data Binding cần những gì? 5
2.3 Android Studio hổ trợ Data Binding những gì? 5
CHƯƠNG 3 – SỰ KHÁC BIỆT GIỮA VIEW BINDING VÀ DATA BINDING 7
TÀI LIỆU THAM KHẢO 9
Trang 7DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ DANH MỤC HÌ
Hình 1 1: Khái niệm View Binding 3 Y
Hình 2 1: Khái niệm Data Bìnding 7 Hình 3 1: Minh hoạ ViewBinding và DataBinding 9
Trang 8CHƯƠNG 1 – VIEW BINDING
1.1 Khái niệm của view binding
ViewBinding là một thành phần trong Android Jetpack, nó giúp ta xóa bỏ bước findViewBindID trong quá trình code bằng các tạo ra các class tương ứng với các file xml trong project
Hình 1 1: Khái niệm View Binding View binding có 1 vài điểm hay hơn so với findViewById:
+ Null safety: Vì view binding tạo tham chiếu trực tiếp tới view, do đó không có rủi ro như Null Pointer Exception khi invalid view ID
+ Type safety: Fileds trong mỗi class binding có những type matching view với tham chiếu trong file xml Do đó, không có rủi ro với class cast exception
Và tính năng quan trọng nhất về View Binding là nó luôn an toàn Trong bài viết chi tiết này, nó đã được cung cấp một cách chi tiết cho View Binding
- Kích hoạt view binding trong build.gradle (không phụ thuộc vào các thư viện được implement)
- View binding tạo ra các đối tượng liên kết cho mọi layout trong module của bạn (activity_awesome.xml → ActivityAwesomeBinding.java)
Trang 9Đối tượng binding chứa một thuộc tính cho mọi View với một id trong layout -với chính xác từng kiểu và không bị null
- Hỗ trợ đầy đủ cho cả Java và Kotlin
1.2 Các tính năng liên kết trong Android Studio
- ViewBinding luôn null safe và type-safe, hỗ trợ cả Java và Kotlin.
- ViewBinding được giới thiệu trong Gradle phiên bản 3.6 trở lên (đi kèm với
Android Studio 4.0, chỉ có gradle 3.6)
- ViewBinding cũng giúp giảm mã soạn sẵn, do đó giảm dư thừa mã.
- Trong khi sử dụng các quy ước đặt tên thích hợp của ViewBinding, cần phải
tuân theo vì nó tạo ra lớp liên kết bên trong bằng cách sử dụng tên của cùng một tệp bố cục Ưu tiên đặt tên tệp bố cục trong snake case Ví dụ: ViewBinding tạo tệp activity_main.xml (snake case) dưới dạng ActivityMainBinding (pascal case), tệp này chứa tất cả thuộc tính và phiên bản của tất cả các views có trong
bố cục đó
- Và bất kỳ ID nào của tất cả các phần tử được tạo bên trong tệp XML bố cục,
ViewBinding sẽ chuyển đổi chúng thành camel case Ví dụ: android:id=”button_submit” -> buttonSubmit Điều này rất hữu ích trong khả năng đọc mã
- Sử dụng ViewBinding, quá trình biên dịch mã nhanh hơn một chút so với
phương thức findViewById() truyền thống
- Lớp ActivityMainBinding được tạo trong đường dẫn sau trong hệ thống phân
cấp dự án, điều này có thể được xem
1.3 Sử dụng View Binding an toàn
Xem ràng buộc có những lợi thế quan trọng hơn việc sử dụng findViewById:
Trang 10An toàn không: Vì ràng buộc Views tạo tham chiếu trực tiếp đến Views nên không có nguy cơ ngoại lệ con trỏ null do ID Views không hợp lệ Ngoài ra, khi một dạng xem chỉ xuất hiện trong một số cấu hình của bố cục, thì trường chứa tham chiếu của nó trong lớp liên kết được đánh dấu bằng @Nullable
Loại an toàn: Các trường trong mỗi lớp liên kết có các loại phù hợp với dạng xem mà chúng tham chiếu trong tệp XML Điều này có nghĩa là không có nguy cơ xảy
ra ngoại lệ phân lớp
Những điểm khác biệt này có nghĩa là sự không tương thích giữa bố cục và mã của bạn sẽ dẫn đến việc bản dựng của bạn bị lỗi trong thời gian biên dịch thay vì trong thời gian chạy
1.4 Các bước thực hiện
Bước 1: Tạo một dự án hoạt động trống
Bước 2: Kích hoạt tính năng ViewBinding
Cần phải bật tính năng ViewBinding trong Android Studio 4.0 trở lên, bên trong tệp cấp độ bản dựng cấp ứng dụng
Gọi đoạn mã sau bên trong phần thân android{} của tệp gradle
Bước 3: Thao tác với file Activity_main.xml
Bước 4: Làm việc với tệp MainActivity
Trang 11CHƯƠNG 2 – DATA BINDING
2.1 Khái niệm của Data Binding
Data Binding là một thư viện được tích hợp trong Android Jetpack Nó cho phép liên kết giữa dữ liệu logic với các UI Element( ví dụ như : TextView, EditText, ImageView…)
Điều này giúp các nhà phát triển lược bớt rất nhiều đoạn code liên kết kiểu như: findViewById() không cần thiết nữa Điều này sẽ giúp cho dự án của bạn sẽ dễ Unit Test hơn, khi lẽ ra phần liên kết UI không thuộc vào business của ứng dụng
Nhờ những ưu điểm của Data Binding mà Data Binding được sử dụng rất nhiều trong các kiến trúc ứng dụng MVP, MVVM…
Trang 12Hình 2 1: Khái niệm Data Bìnding
2.2 Để sử dụng Data Binding cần những gì?
Chính vì Data Binding được tích hợp trong Android Jetpack nên khả năng tương thích ngược rất tốt Bạn có thể chạy Data Binding cho các thiết bị Android 4.0 trở lên
Về Android Plugin for Gradle, mình khuyến khích các bạn cứ bản mới nhất mà dùng Tuy nhiên, theo thông tin từ Google thì Data Binding hỗ trợ từ phiên bản 1.5.0 trở lên
Chốt lại, dưới đây là thông tin phiên bản tối thiểu hỗ trợ Data Binding:
Android Support Library > 15.0
Android M SDK 23.0
Android Studio 1.3 trở lên
2.3 Android Studio hổ trợ Data Binding những gì?
Có một số điểm hay ho là Android Studio hỗ trợ bạn code Data Binding khá tốt Một số tính năng mà Android Studio hỗ trợ như:
Hỗ trợ làm nổi bật Syntax
References, bao gồm cả navigation
Hỗ trợ gợi ý code XML
Đánh dấu lỗi cú pháp
Ngoài ra, bạn để ý Preview panel trong Layout Editor sẽ hiển thị giá trị mặc định data binding nếu được cung cấp
Trang 13CHƯƠNG 3 – SỰ KHÁC BIỆT GIỮA VIEW BINDING VÀ DATA BINDING
Hình 3 1: Minh hoạ ViewBinding và DataBinding
ViewBinding là một loại tập hợp con của DataBinding các thư viện có nghĩa là ViewBinding và DataBidingcó thể thực hiện các công việc giống nhau về bố cục ràng buộc Và điều đó cũng có nghĩa là DataBinding, bạn có thể không cần ViewBindingvì
nó sẽ làm những gì ViewBindingđược cho là phải làm và cũng cung cấp một chút chức năng bổ sung như ràng buộc 2way và sử dụng các biến trong XMLtệp
- Sự khác nhau giữa ViewBinding và DataBinding
Trang 14Thư viện View Binding nhanh hơn thư viện Data Binding vì nó không sử dụng bộ xử lý chú thích bên dưới và khi nói đến tốc độ thời gian biên dịch thì View Binding hiệu quả hơn
Chức năng duy nhất của View Binding là ràng buộc các khung nhìn trong
mã Mặc dù Data Binding cung cấp thêm một số tùy chọn như Binding Expressions, cho phép chúng ta viết các biểu thức, các biến kết nối với các khung nhìn trong layout
Thư viện Data Binding hoạt động với các đối tượng Dữ liệu quan sát được, bạn không phải lo lắng về việc làm mới giao diện người dùng khi dữ liệu cơ bản thay đổi
Thư viện data binding cung cấp cho chúng tôi Bộ điều hợp liên kết Thư viện Data Binding cung cấp cho chúng ta tính năng Two way Data Binding, đây là một kỹ thuật liên kết các đối tượng của bạn với bố cục xml,
để cả đối tượng và bố cục có thể gửi dữ liệu cho nhau
Trang 15TÀI LIỆU THAM KHẢO
1. Nguyễn Khắc Bình (2020), Sử dụng ViewBinding thay thế cho findviewbyid()
trong android https://viblo.asia/p/su-dung-view-binding-thay-the-cho-findviewbyid-trong-android-aWj53DwPK6m
2. View Binding https://developer.android.com/topic/libraries/view-binding
3. Sơn Dương, Sử dụng Data Binding trong Android hiệu quả
https://vntalking.com/su-dung-data-binding-trong-android.html#:~:text=1.-,Data
%20Binding%20l%C3%A0%20g%C3%AC%3F,()%20kh%C3%B4ng%20c
4. Wanja Mike (2021), How to use View Binding in Android
https://www.section.io/engineering-education/view-binding-in-android/
Trang 165. Dương Ngọc Hạnh (2019), Android: Sự khác biệt giữa DataBinding và
ViewBinding https://helpex.vn/question/android-su-khac-biet-giua-databinding-va-viewbinding-60bc9903d24b80926dbd18a8