آموزش دیتا بایندینگ Data Binding در اندروید ، ما در تجاری اپ قصد داریم مبحث کتابخانه Databinding در اندروید را در چند مقاله به صورت جامع و کاربردی آموزش دهیم که یک بار برای همیشه مفهوم کامل کتابخانه دیتا بایندینگ در اندروید را بشناسید و از کار با آن لذت ببرید.
کتابخانه Data Binding در اندروید برای شما این امکان را فراهم می کند که کامپوننت های UI خود را با کمترین کد و بدون حالت برنامه نویسی به منبع داده خود وصل کنید تا دیتا ها در لایه قرار گیرند.
برای درک بیشتر مفهوم Data Binding در اندروید در نظر بگیرید که تابحال ویو های داخل layout را چگونه مقدار دهی میکردید ؟
خب مسلما در جاوا از findViewById() استفاده می کردید تا View شناسایی شود و سپس با ویژگی های مخصوص View ، داده ها را جهت نمایش در لایه ارسال می کنیم.
در مثال زیر ما یک TextView را مقدار دهی کردیم:
جاوا
TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName()
کاتلین
findViewById(R.id.sample_text).apply {
text = viewModel.userName
}
اما حالا در حالتی که از دیتا بایندینگ Data Binding استفاده کنید دیگر نیازی به معرفی View مورد نظر که در این مثال TextView است با کدهای جاوا یا کاتلین ندارید ،بلکه می توانید مستقیما مقدار داده مورد نظر را به View اصطلاحا بچسبانید.
توجه کنید که ما گفتیم مستقیما داده را به View بدهید و این عبارت مستقیما دقیقا پیاده میشود ! بدین صورت:
<TextView
android:text="@{viewmodel.userName}" />
داده شما درون متغیر username در فایل جاوا یا کاتلین قرار دارد که حالا ما با استفاده از Data Binding از لایه xml به آن دسترسی داریم و بدین صورت مقدار درونی آنرا مستقیما به TextView متصل میکنیم.
از لینک های زیر برای یادگیری نحوه استفاده از کتابخانه دیتا بایندینگ ( Data Binding Library ) در برنامه های اندروید خود استفاده کنید.
در مقاله مجهز کردن پروژه اندروید به Data Binding شما یاد خواهید گرفت چگونه پروژه اندروید خود درون اندروید استودیو را به Data Binding مجهز کنید تا بتوانید از تمامی ویژگی های Data Binding بدون محدودیت در آن استفاده کنید.
زمان اتصال لایه های xml به Data Binding خود کتابخانه Data Binding کلاس هایی بصورت اتوماتیک تولید ( Generate) می کند که برای bind ( متصل ) شدن لایه به شی های داده درون کلاس های کاتلین یا جاوا مورد نیاز است .
این کلاس ها تمامی ویژگی های لایه مورد نظر شما از جمله import ها ،متغیر ها و حتی include ها را فراهم می کند که شما تنها با فراخوانی کلاس های تولید شده به تمامی view های درون layout دسترسی کامل داشته باشید.
کتابخانه Data Binding کلاس ها و متد هایی جهت مشاهده لحظه ایه داده برای اعمال تغییرات برروی layout را دراختیار ما قرار داده.
بدین معنا که دیگر نیازی نیست نگران به روز شدن داده ها در layout باشیم . بلکه خود Data Binding این ویژگی را دارد که زمان بروز شدن داده ها ( درصورتی که از Observable ها استفاده کرده باشیم) خودش لایه xml را هم با داده های جدید به روز می کند.
همانطور که گفته شد کتابخانه Data Binding خود کلاس هایی را برای دسترسی به view های درون لایه xml تولید می کند که در این پست ما نحوه تولید کلاس ها و سفارشی سازی کردن آنها را آموزش خواهیم داد.
در هر لایه ای شما می توانید یک سری ویژگی ها و listener را با دیتا بایندینگ Data Binding پیاده کنید.برای مثال با استفاده از binding adapter شما میتوانید پراپرتی setText یا شنونده setOnClickListener را پیاده کنید.حتی میتوانید پراپرتی و شنونده های کاستومایز ایجاد کنید که در این پست بطور مفصل به آن پرداخته ایم.
کتابخانه Data Binding از ارتباط دو طرفه بین لایه و منبع داده کاملا پشتیبانی می کند بدین معنی که Data Binding توانایی دریافت داده برای تغییر پراپرتی ها و گوش دادن به آپدیت های کاربر برای تغییر پراپرتی ها بصورت همزمان را دارد.