معرفی
اگر یک طرح بندی را به یک طرح بندی اعلامی با اتصال داده ها تبدیل کنید، می توانید از فراخوانی گران قیمت findViewById() جلوگیری کنید. فرض کنید می خواهید یک برنامه ماشین حساب ایجاد کنید، سپس باید تعدادی دکمه برای نمایش ارقام و عملگر در فایل layout قرار دهید.
این بدان معناست که باید تعدادی تماس برای findViewById() از فایل کلاس برقرار کنید. اگر آن طرحبندی را به یک طرحبندی اعلامی با اتصال دادهها تبدیل کنید، میتوانید از تعداد تماسهای findViewById اجتناب کنید. و همچنین اتصال داده ها طرح شما را انعطاف پذیرتر می کند.
در این مقاله، من قصد دارم یک برنامه اندروید ساده ایجاد کنم که نشان می دهد چگونه کتابخانه اتصال داده را به برنامه اندروید خود اضافه کنید و چگونه یک طرح بندی را به طرح بندی اعلامی با اتصال داده تبدیل کنید.
ابتدا اپلیکیشن اندرویدی خود را طبق معمول ایجاد کنید و کتابخانه اتصال داده را به پروژه اندروید استودیو اضافه کنید. این قبلاً در Android SDK گنجانده شده است و فقط باید اتصال داده را فعال کنیم. برای این کار فایل Gradle سطح ماژول را باز کنید و خطوط زیر را به فایل اضافه کنید.
- dataBinding {
- enabled true
- }
و روی دکمه Sync Now کلیک کنید تا کتابخانه های لازم را به پروژه خود اضافه کنید.
اکنون یک کلاس bean ایجاد کنید که قرار است در فایل layout استفاده شود.
- public class Student {
- private String firstName;
- private String lastName;
- public Student(String firstName, String lastName) {
- this.firstName = firstName;
- this.lastName = lastName;
- }
- public String getFirstName() {
- return firstName;
- }
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
- public String getLastName() {
- return lastName;
- }
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
- }
اکنون، من قصد دارم با افزودن تگ layout، فایل layout را به یک طرح بندی اعلانی تبدیل کنم. و اکنون عنصر اصلی layout، برچسب طرح مانند این خواهد بود.
- <?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">
اکنون میتوانیم با استفاده از تگ داده، هر شیء را از کلاس جاوا به فایل layout منتقل کنیم. در داخل تگ داده، می توانیم متغیرهای خود را اعلام کنیم. معمولاً متغیرها دو ویژگی دارند، نام و نوع. نام می تواند هر نامی باشد که می خواهید در طرح بندی استفاده کنید و نوع کلاس جاوا خواهد بود. بنابراین، در اینجا من کلاس دانش آموز را اعلام می کنم.
- <data>
- <variable name="student" type="com.example.pranavjdev.databindingsample.Student" />
- </data>
و در طرح بندی من دو نمای متن ایجاد کرده ام و می خواهم نام و نام خانوادگی را به طور مربوط به هر نمای متنی نشان دهم. برای آن می توانیم از نام متغیری که در داخل متغیر اعلام کرده ایم استفاده کنیم و به ترتیب به نام و نام خانوادگی دسترسی داشته باشیم.
- android:text="@{student.firstName}"
اکنون کل طرح ما به شکل زیر خواهد بود