با پیچیدهتر شدن برنامهها، نیاز به روشهایی برای مدیریت مؤثرتر و با خطای کمتر افزایش یافت. در اینجا است که دو تکنیک Data Binding و View Binding به کمک توسعهدهندگان میآیند.
Data Binding و View Binding چیست؟ هر دو تکنیک برای برقراری ارتباط بین کد و رابط کاربری (UI) استفاده میشوند، اما تفاوتهای مهمی دارند که بسته به نوع پروژه، ممکن است یکی از آنها را به دیگری ترجیح دهید.
تفاوتها، مزایا و کاربردهای Data Binding و View Binding
در توسعه اندروید، مدیریت مؤثر اجزای رابط کاربری و ارتباط با آنها حیاتی است. در روشهای سنتی، توسعهدهندگان برای تعامل با عناصر رابط کاربری از ()findViewById
استفاده میکردند. اما با پیچیدهتر شدن برنامهها، نیاز به روشهای کارآمدتر و با خطای کمتر داریم. Data Binding و View Binding دو ابزار قدرتمندی هستند که توسط اندروید برای سادهسازی تعاملات رابط کاربری ارائه شدهاند. هر کدام از این ابزارها کاربرد و ویژگیهای خاص خود را دارند و در موقعیتهای متفاوتی استفاده میشوند.
View Binding چیست؟
در اندروید View Binding کلاسهای binding را برای هر فایل layout XML در پروژه شما ایجاد میکند. این کلاسهایbinding به شما این امکان را میدهند که به صورت مستقیم و امن به ویوها بدون نیاز به ()findViewById دسترسی پیدا کنید.
ویژگیهای کلیدی View Binding
مثال : فرض کنید در یک فایل XML به نام activity_main.xml یک TextView با شناسه textView دارید. با استفاده از View Binding، کلاس binding به صورت خودکار تولید میشود و به شما اجازه میدهد به صورت امن به این TextView دسترسی پیدا کنید.
مثال: اگر شما بخواهید از Data Bindingاستفاده کنید، باید در فایل XML از <layout> استفاده کنید و به آن annotation اضافه کنید. اما با View Binding، فقط کافی است به binding class دسترسی پیدا کنید.
فرض کنید در فایل XML یک Button با شناسه button دارید و یک TextView با شناسه textView ندارید. با استفاده از View Binding، کلاس binding به صورت خودکار فقط مرجع Button را شامل میشود و از ایجاد خطاهای زمان اجرا جلوگیری میکند.
مثال:
فعال کردن View Binding در فایل build.gradle:
استفاده از view binding در یک اکتیویتی:
در این مثال، ActivityMainBinding
کلاس binding تولید شدهای است که به فایل layout activity_main.xml
مربوط میشود. شما میتوانید به صورت مستقیم به textView
دسترسی پیدا کنید، بدون نیاز به استفاده از ()findViewById
.
Data Binding چیست؟
کتابخانه Data Binding یک کتابخانه قدرتمندتر است که به توسعهدهندگان اجازه میدهد تا اجزای رابط کاربری را به صورت مستقیم به منابع داده در لایههای خود متصل کنند. این کار با استفاده از فرمت اعلامی (declarative) انجام میشود و نیاز به نوشتن کد برنامهنویسی برای این اتصال را کاهش میدهد. Data Binding مقدار کد اضافه (boilerplate code) را کاهش میدهد و بهویژه برای مدیریت بهروزرسانیها و تعاملات پیچیده رابط کاربری مفید است.
مثال : فرض کنید یک فرم ثبتنام دارید که شامل یک فیلد EditText
برای وارد کردن نام کاربر است. با استفاده از Data Binding، میتوانید بهطور خودکار تغییرات در EditText
را به مدل داده منتقل کنید و همچنین تغییرات در مدل را به EditText
بازتاب دهید:
در اینجا، وقتی کاربر نام خود را وارد کند، user.name
بهروزرسانی میشود و اگر برنامه user.name
را تغییر دهد، مقدار جدید بهطور خودکار در EditText
نمایش داده میشود.
در اینجا، اگر سن کاربر بیش از ۱۸ باشد، TextView
متن "بزرگسال" را نشان میدهد، در غیر این صورت "کودک" را نمایش میدهد.
LiveData
ادغام میشود و مدیریت بهروزرسانیهای رابط کاربری در پاسخ به تغییرات داده را آسانتر میکند.مثال: فرض کنید که شما از LiveData
برای مدیریت وضعیت یک اپلیکیشن استفاده میکنید. با استفاده از Data Binding، میتوانید به راحتی تغییرات در LiveData
را در UI خود بازتاب دهید:
و در فایل XML:
با این تنظیمات، هر بار که user
در UserViewModel
تغییر کند، TextView
بهطور خودکار بهروزرسانی خواهد شد.
مثال: فرض کنید که میخواهید یک دکمه ایجاد کنید که بر اساس شرایط خاصی فعال یا غیرفعال شود. با استفاده از Data Binding، میتوانید این منطق را بهراحتی در XML پیادهسازی کنید:
در اینجا، اگر isActive
در مدل داده user
تغییر کند، وضعیت فعال یا غیرفعال بودن دکمه بهطور خودکار بهروز خواهد شد. این نوع اتصال، کد نویسی را سادهتر و منطق را شفافتر میکند.
فعال کردن data binding در فایل build.gradle :
ایجاد یک data class:
استفاده از data binding در یک Activity:
وصل کردن data در XML:
در این مثال، nameTextView
به طور خودکار بهروزرسانی میشود تا نام کاربر را نمایش دهد زمانی که Data Binding انجام میشود.
چه زمانی از View Binding و Data Binding استفاده کنیم؟
از View Binding استفاده کنید اگر:
findViewById()
اجتناب کنید.از Data Binding استفاده کنید اگر:
LiveData
استفاده میکنید و به دنبال یکپارچگی آسان با UI هستید.این تفاوتها به شما کمک میکنند تا تصمیم بگیرید کدام روش برای پروژه شما مناسبتر است. View Binding برای پروژههای ساده و کم پیچیده، و Data Binding برای پروژههایی که نیاز به پیوندهای پویا و پیچیده دارند مناسب است.
نتیجه گیری:
هر دو روش Data Binding و View Binding ابزارهای قدرتمندی در برنامههای اندروید هستند. View Binding برای موارد استفاده ساده مناسب است و جایگزینی سبک و ایمن برای ()findViewById
محسوب میشود. از سوی دیگر، Data Binding یک راهکار غنیتر با قابلیتهای بیشتر است که در مواردی که نیاز به بهروزرسانیهای پویا و تعاملات پیچیده با دادهها وجود دارد، به خوبی عمل میکند.
و در نهایت انتخاب بهترین گزینه به نیازهای خاص پروژه بستگی دارد.
ممنون که تا آخر این پست همراه من بودید ، امیدوارم براتون مفید بوده باشه 🙌🙏✌ (:
بقیه آموزش های من با نام (mister developer) را می توانید در تلگرام و اینستاگرام دنبال کنید!!
کانال تلگرام: mister_developerr
اینستاگرام: mister_developerr
موفق و پیروز باشید