Android Studio hỗ trợ Data Binding những gì?...- sec 5 CHƯƠNG 3-— SỰ KHÁC BIỆT GIỮA VIEW BINDING VÀ DATA BINDING...7... CHUONG 1 - VIEW BINDING 1.1 Khai niém cua view binding ViewBindi
Trang 1TONG LIEN DOAN LAO DONG VIET NAM
TRUONG DAI HOC TON ĐỨC THẮNG
KHOA CONG NGHE THONG TIN
7a
BAO CÁO GIỮA KĨ
TÌM HIẾU VE 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
THANH PHO HO CHi MINH, NAM 2022
Trang 2il
TONG LIEN DOAN LAO DONG VIET NAM
TRUONG DAI HOC TON ĐỨC THẮNG
KHOA CONG NGHE THONG TIN
7a
BAO CÁO GIỮA KĨ
TÌM HIẾU VE 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
LOI CAM ON
Trang 31H
Chú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ê ạ
Chung em xin cam on a!
Trang 4CONG TRINH DUOC HOAN THANH
TAI TRUONG DAI HOC TON DUC THANG
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 nay 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 gia 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à ghỉ rõ họ tên)
Nguyễn Phúc Bảo Danh
Huỳnh Huỳnh Đúc
Nguyễn Thanh Qui
Trang 5TOM TAT
Đâ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 va Data Binding” Bai bao cao là nội dung được tìm hiểu qua nghiên cứu
vệ dé tai nay
Trang 6
MUC LUC
1.1 Khái niệm của view binding - 0 222222112 222k re 2 1.2 Các tính năng liên kết trong Android Studio - 5c 2
13 Sử dụng View Binding an toàn - - 2111111122 He 3 1.4 Các bước thực hiện Q.0 2.10 11222122 HH nhu 3 CHƯƠNG 2— DATA BINDING SH tre 5 2,1 Khái niệm của Data Binding - Q0 222212 He 5 2.2 Đề sử dụng Data Binding cần những gì? Sen 5 2.3 Android Studio hỗ trợ Data Binding những gì? - sec 5
CHƯƠNG 3-— SỰ KHÁC BIỆT GIỮA VIEW BINDING VÀ DATA BINDING 7
Trang 7DANH MUC CAC BANG BIEU, HINH VE, DO THI DANH MUC Hi
Hình L I: Khái mệm View Bimdlng - c 12c 2222111211211 1511155 1111511151811 ve
Y
Hình 2 I: Khái nệm Data Binding c2 1211222111211 2 2111121118115 2 111kg vey Hinh 3 1: Minh hoa ViewBinding và DataBinding 5 c2 12221222
Trang 8CHUONG 1 - VIEW BINDING
1.1 Khai niém cua view binding
ViewBinding là một thành phần trong Android Jetpack, nó giúp ta xóa bỏ bước ñndViewBindID trong quá trình code bằng các tạo ra các class tương ứng với các ñle xml trong project
android {
viewBinding (
enabled = true
Hình | 1: Khai niém View Binding View binding cé L vài điểm hay hơn so với ñndViewByld:
+ Null safety: Vi view binding tao tham chiéu trực tiếp tới view, do đó không có rui ro nhu Null Pointer Exception khi invalid view ID
+ Type safety: Fileds trong méi class binding co nhiing type matching view voi tham chiéu trong file xml Do d6, khéng có rủi ro vdi class cast exception
Và tính năng quan trong nhất về View Binding là nó luôn an toàn Trong bài viết chỉ tiết này, nó đã được cung cấp một cách chỉ 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.xmÌ —› Acftivity AwesomeBinding.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-saf, hỗ trợ cả Java và Kotlin
- _ ViewBimding được giới thiệu trong Gradle phiên ban 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 Vi du: ViewBinding tạo
tép activity main.xml (snake case) dudi dang 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 đó
ViewBinding sẽ chuyển đổi chúng thành camel case Ví dụ:
android:id="button_submit” -> buttonSubmit Diéu nay rat hitu ich trong kha
năng đọc mã
- Su dụng ViewBimding, quá trỉnh biên dịch mã nhanh hơn một chút so với phương thức ñndViewByldQ truyền thống
-_ Lớp ActiviyMainBinding đượ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 ñndViewByld:
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ơ ngoai 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 |: Tao mét dự án hoạt động trong
Bước 2: Kích hoat tinh nang ViewBinding
buildFeatures {
viewBinding = true
Cần phải bật tinh nang 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 11CHUONG 2 — DATA BINDING
2.1 Khai niém cua Data Binding
Data Binding la mét thy 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ư : TexfView, Ediflext, 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ư: find ViewByld() 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 dung MVP, MVVM
Android Data Binding
Data Binding
Trang 12Hinh 2 1: Khai niém Data Binding 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
e Android M SDK 23.0
® Android Studio 1.3 tro 1é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 kha tot
Mét s6 tinh nang ma Android Studio hé tro như:
e© - Hỗ trợ làm nỗi bật Syntax
* References, bao gém cả navigation
© - Đánh dấu lỗi cú pháp
¢ Ngoai ra, ban dé y Preview panel trong Layout Editor sẽ hiển thị giá trị mặc dinh data binding néu được cung cấp
Trang 13CHUONG 3- SU KHAC BIET GIU'A VIEW BINDING VA DATA BINDING
Hinh 3 1: Minh hoa ViewBinding va DataBinding
ViewBinding la mot loai tap hop con cia DataBinding cac thu vién co nghia 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 can ViewBindingvi
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 XMIL tệp
- - Sự khác nhau giữa View Binding và DataBinding
Trang 14Thu vién View Binding nhanh hon thu vién Data Binding vi no khéng sw
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 Bmding 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, day là một kỹ thuật liên kết các đối tượng của bạn với bé cuc xml,
đề cả đôi tượng và bô cục có thé gửi dữ liệu cho nhau
Trang 1510
TAI LIEU THAM KHAO
Nguyén Khac Binh (2020), Ste dung ViewBinding thay thé cho findviewbyid() trong android bttps://viblo.asia/p/su-dung-view-binding-thay-the-cho- findviewbyid-trong-android-aWj53DwPK6m
View Binding https://developer.android.com/topic/libraries/view-binding
Son Duong, Si dung Data Binding trong Android hiệu quả
hftps:/vntalking.com/su-dung-data-binding-trong-android.html#:~:text=L.-.Data
%20Binding%201%C3 %A0%20g%C3%AC%3F,()%20kh%C3%B4ng%2 0c
%EIMBA%A7TN%20thi%E 1 %“BA%BFt%20n%E1%BB%AFa
Wanja Mike (2021), How to use View Binding in Android
https://www.section.io/engineering-education/view-binding-in-android/
Trang 16lãi
5 Duong Ngoc Hanh (2019), Android: Sự khác biệt giữa DataBinding va View Binding https://helpex.vn/question/android-su-khac-biet-giua-databinding- yva-viewbinding-60bc9903d24b80926dbd18a8