پیاده سازی کتابخانه data binding در اندروید به چه صورتی می‌باشد ؟

سلام خدمت دوستان عزیز کدایت ، با مقاله دیگر از سلسله آموزش مقدماتی جاوا در خدمت شما برنامه نویسان هستیم امروز قصد داریم درمورد مبحث  data binding در اندروید آموزش دهیم . و اینکه با دیتا بایندینگ در اندروید چه کاری های  انجام داده می‌شود . با ما همراه باشید تا قدم به قدم با همدیگر جلو برویم .

data binding در اندروید چیست؟

به طور خلاصه و مفید  data binding داده ها رو در خودش نگهداری می‌کند . و شاید بخواهید بدانید که ما چه زمانی از دیتا بایندینگ استفاده می‌کنیم ؟ ما در زمان های نیازی داریم یکسری اطلاعات و داده هایی از دیتابیس و فایل XML و یا یک اسکریپت بازیابی کنیم  . که در این موقع نیاز هست ما از کتابخانه Data Binding استفاده کنیم . هر وقت صبحت از دیتا بایندینگ بود منظور ما برای بازیابی اطلاعات از یک منبع مانند Database یا هر چیز دیگر می باشد.

دیتا بایندینگ در اندروید چگونه باعث راحتی برنامه نویسان می‌شود

همه ی ما روزانه با اپلیکیشن های بزرگی سرو کار داریم که از جمله یکی از مشهور ترین آن ها برنامه اینستاگرام می‌باشد. که قریب به 2 میلیارد نفر خدمات می‌دهد ولی برخلاف بزرگی این برنامه ، از یک اکتیویتی استفاده می‌کند و سایر بخش های این اپلیکیشن از فرگمنت استفاده شده است . برای این که بدانید فرگمنت (Fragment) چیست ؟ به لینک روی مقاله مراجعه کنید . کمکی که Data Binding به ما کرده ، این است که حجم کدنویسی ما به شدت کم شده است . ما با استفاده از دیتا بایندینگ متغیر های جاوایی که از آن ها استفاده می‌کنیم را در داخل لایه XML خودمون و به صورت مستقیم مقدار دهی می‌کنیم .

تمیز شدن کدنویسی با استفاده از data binding در اندروید

راحتر شدن کدنویسی با data binding در اندروید

زمانی که از Data Binding در اندروید استفاده می‌شود دیگر نیازی به Id نداریم .  از این به بعد ما از findviewbyid استفاده نمی‌کینم  . و همچنین نیازی هم نیست  که برای اینکه رویداد onclick برای button و یا هر چیز دیگری می‌خواهیم از SetonClicklistener کنیم.  و همه ی این ها در لایه XML ما انجام می‌گیرد. این مقدار دهی متغیر ها برای برنامه نویسان بسیار وقت گیر بود.

اگر بخواهم باز هم به صورت خلاصه و مفید بهتون بگم که دیتا بایندینگ در اندروید چه کاری انجام می‌دهد . و چگونه باعث راحتی ما می‌شود . باید اینگونه بگم که ما اون کامپوننت های که در رابط کاربری خودمون از آن استفاده می‌کنیم را با کمترین زحمت کدنویسی به منبع وصل می‌کنیم .

مقالات پر بازدید : آموزش کاتلین در برنامه نویسی اندروید 

پیاده سازی پروژه :

حالا که شما تقریبا میدانید که Data Binding در اندروید چیه ؟ و چه کمک هایی به ما می‌کند و باعث راحتر شدن و همچنین تمیز شدن کدنویسی ما می‌شود . من قصد دارم با انجام یک پروژه کاربردی نحوی پیاده سازی دیتا بایندینگ در برنامه نویسی اندروید را برای شما عزیزان یاد دهیم . من در این پروژه قصد دارم با استفاده ازکتابخانه DataBinding کیسری اطلاعات را به صورت لیستی در یک یک RecyclerView نمایش دهیم .

 در این پروژه ازمعمای MVVM به صورت مقدماتی استفاده شده است تا یک آشنایی کوچکی نیز با این معماری پیدا کنید . اولین کاری که ما باید انجام دهیم این هست که Data Binding را در اندروید استودیو خودمون فعال کنیم . این کار با قرار دادن قطعه کد زیر در بخش ماژول اندروید استودیو انجام می‌گیرد .

ما با کمک کد بالا تونستیم به Data Binding سیستم دسترسی پیدا کنیم . درواقعا میتونیم کلاس های Binding را بسازیم در مرحله بعد ما در پروژه خودمون برای ساخت ریسایکلر ویو و کد نویسی های آن باید چندین پکیچ درست کنیم تا کد های ما تمیز و بر طبق معماری جلو برویم . این پکیچ ها به اسم Model , View , Adapter و View Model می‌باشد که برای ایجاد آنها در منوی کناری و در پوشه Java روی پکیچ اصلی راست کلیک کنید و به مسیر new/package بروید و اسم های آنها را انتخاب کنید . پکیچ های ما مانند تصوی زیر خواهند بود .

ایجاد پکیج ها در اندروید استودیو

ساخت پکیج های معماری MVVM

به قسمت layout اکتیویتی خودتون بروید و کد های زیر را در آن قرار دهید .

توضیحات کد بالا :

در کد های بالا همانطور که مشاهده می‌کنید همه ی لایه ما داخل تگ Layout قرار گرفته هست . ما زمانی که می‌خواهیم از دیتا بایندینگ استفاده کنیم این لازمه کار ما است و بعد از آن ما امدیم یک لایه ایجاد کردیم و در آن یک RecyclerView قرار دادیم .کار با (ریسایکلر ویو )RecyclerView نیز در کدایت آموزش دادیم حالا ما باید لایه xml دیگر برای آیتم های ریسایکلر ویو خودمون ایجاد کنیم . یعنی اون قالبی که دوست داریم آیتم های  ریسایکلرویو ما آن گونه باشد . کد های این قسمت مانند زیر است .

تشریح کد :

نکاتی که در کد بالا  برای شما عزیزان مورد  سوال می‌باشد من در قسمت بالا هم گفتم ابتدا برای استفاده از Data Binding باید تمامی کد های ما در داخل تگ Layout قرار بگیرد. اما در این قسمت تکی دیگر به اسم data نیز اضافه شده است .

این تگ دارای فیلد variable  میباشد که دارای name و type میباشد . در قسمت name نامی به دلخواه قرار می‌دهیم این نام برای دسترسی ما می‌باشد . اما type برای مشخص کردن نوع منبع ما است . منبع ما در این پروژه Model ما می‌باشد که ما به کمک Data Binding همین جا و به صورت مستقیم مقادیری که در Model ما مقداردهی شده اند را در متغیر های خودمون قرار می‌دهیم بدون کدنویسی در بخش Java که کار های ما را بسیار دشوار تر و کدنویسی ما با این کار بسیار پیچیده تر می‌شود .

من برای آیتم های ریسایکلر ویو خودم از یک CircleImageView که شما عزیزان میتوانید کتابخانه آن را از این لینک تهیه کنید و به پروژه خودتون اضافه کنید و همچنین از دوتا TextView برای اسم و ایمیل اشخاص استفاده کرده ام . و اما نکته مهم دیگر این هست که ما برای مقداردهی مستقیم این متغیر ها از قسمت Model  که در قسمت پایین با آن نیز می‌رسیم چه کاری باید انجام دهیم ؟ همانطور که در TextView بالا مشاهده می‌کنید این کار بر عهده کد زیر هست .

ما به کمک name که در قسمت بالا و در تگ variable به صورت دلخواه انتخاب کردیم به Model دسترسی پیدا می‌کنم و مقدار مورد نظر خودمون را انتخاب می‌کنیم . این برای مقدار دهی Text View ما بود . و اما مقدار دهی CircleImageView که اجازه بدهید بعد کد های Model برای شما توضیح بدهم .

UserModel :

کد های قسمت Model ما به صورت زیر است . در package مدل خودتون یک کلاس ایجاد کنید و نام UserModel را برای آن قرار دهید .

ما در کلاس userModel خودمون سه تا متغیر به اسم name , email , image تعریف کردیم و برای آن ها همانطور که در کد های بالا مشاهده می‌کنید . Setter و Getter و همچنین سازنده تعریف کردیم . اما نکته ای که لازم هست من برای شما توضیح بدهم این هست من باید تصاویر استفاده شده در ریسایکلر ویو خودم را از کتابخانه Picaso دانلود کنم . که در لینک اشاره شده میتوانید کتابخانه آن را برداشته و به قسمت های کتابخانه پروژه خودتون اضافه کنید .

اما طرز کار با این کتابخانه بسیار آسون می‌باشد و شما میتوانید با مراجعه به مقاله کتابخانه Picaso ما به راحتی آن را یاد بگیرید . و اما برای اینکه ما بتوانیم در قسمت XML خودمون به صورت مستقیم  Circle ImageView خودمون را مقدار دهی کنیم باید با کمک @BindingAdapter({“android:CircleImageView”}) و همچنین نامی که دقیقا در داخل پارانتز هست را در داخل Circle Image به کار ببریم و بعد از نیز مانند مقدار دهی TextView ها در قسمت بالا عمل میکنیم.

Adapter :

حالا نوبت به کلاس Adpater ما رسیده هست تا به کمک این کلاس بتونیم UserModel خودمون رو مقدار دهی کنیم برای این کار ابتدا در داخل پکیج Adpater یک کلاس به نام AdapterRecyclerView ایجاد کنید. های این بخش به صورت زیر می‌باشد.

ساخت Adpater ریسایکلر ویو رو در مقاله های ریسایکلر ویو برای شما عزیزان آموزش دادیم و اما تفاوت های که در این data binding در اندروید وجود دارد.

توضیحات کد :

در قسمت  بالا ItemRecyclerviewBinding همون اسم لایه ایتم های ما هست . که در آخر آن یدونه Binding اضافه شده است . به کمک آن لایه خودمون را به Adpater  تعریف میکنیم .مانند قطعه کد بالا و در آخر نیز مقدار مورد نظر  را Return  می‌کنیم.

ما در این جا ما مانند قبل دیگر برای مقدار دریافتی کلاس My ViewHolder خودمون View قرار نمی‌دهیم . و اون Binding ای که ساخته ایم  به عنوان ورودی قرار می‌گیرد .

و در از کد بالا به دستور SetUser یعنی همون اسمی که در قسمت name در لایه itemRecycler View مشخص کردیم پاس میدهیم . بخش Adapter نیز به پایان رسید و حالا برای قسمت پایان می‌ریم سراغ قسمت View و همون اکتیوتی خودمون که در پکیج  View قرار دادایم و کد های زیر را در آن قرار میدهیم .

View :

در این بخش که بسیار راحت می‌باشد یک Binding تعریف کردیم و بعد از آن نیز سراغ تعریف RecyclerView می‌رویم و کار بعدی برای اضافه کردن Data های خودمون به کلاس Model می‌باشد .

در اینجا کار ما به اتمام رسید

امیدوارم این مقاله برای شما مفید بوده باشد .

با آرزوی موفقیت شما عزیزان .

برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]
اشتراک‌گذاری

من فرشید حبیبی هستم، یک برنامه نویس موبایل با بیش از 5 سال تجربه. من علاقه زیادی به برنامه نویسی دارم و در این زمینه به طور مداوم در حال یادگیری و پیشرفت هستم. در حال حاضر، به عنوان یک برنامه نویس اندروید در یک شرکت معتبر مشغول به کار هستم و همچنین یک وبسایت آموزشی به نام کدایت را اداره می کنم. در کدایت، به تولید محتوای آموزشی در مورد برنامه نویسی اندروید و وب می پردازیم. هدف من از ایجاد این وبسایت، کمک به سایر برنامه نویسان اندرویدی برای یادگیری و پیشرفت در این زمینه است.

یک نظر

    1. فرشید حبیبی نویسنده پاسخ

      مرسی . تمام سعی ما بر این هستش که شما عزیزان مباحث را به راحتی یاد بگیرید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *