با پیچیدهتر شدن برنامهها، نیاز به روشهایی برای مدیریت مؤثرتر و با خطای کمتر افزایش یافت. در اینجا است که دو تکنیک 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
موفق و پیروز باشید