تعريف وشرح Data Binding وما اهميتها في تطوير تطبيقات الاندرويد ستوديو

 

ماهي data binding وما اهميتها في تطبيقات الاندرويد

ماهي Data binding


مكتبة Data Binding Library هي مكتبة دعم تتيح لك استخدام تنسيق تعريفي بدلاً من برمجيًا لتوصيل مكونات واجهة المستخدم في تخطيطاتك بمصادر البيانات في تطبيقك.

حيث يتم تحديد التخطيطات أيضًا في عمليات التعليمات البرمجية التي تستدعي طرق نظام واجهة المستخدم. على سبيل المثال ، يستدعي الرمز أدناه findViewById () للعثور على عنصر واجهة مستخدم TextView وتوصيله بخاصية userName لمتغير 

viewModel

بمعنى اخر اذا قمت بعمل id لعنصر معين في xml وتريد تعريفة داخل ملف java تقوم بكتابة نوع العنصر وليكن TextView text; ومن ثم تستدعي العنصر بالاسفل عن طريق text=findviewbyid(r.id.my_text) وتفعل هذة مع جميع المتغيرات وفي الغالب تأخذ هذة المرحلة وقت كبير في الكتابة وتجعل من شكل الكود الخاص بك كبير وهذا ليس من ضمن عمليات الكود التنظيف


عن الاندرويد ستوديو


يعد برنامج أندرويد ستوديو من اقوى البرامج الـ برمجة المخصصة في مجال تطوير تطبيق او تطبيقات الاندرويد كما ذكرنا ، ويمكن أن تقوم بي تحميل البرنامج مجانا من خلال الموقع الرسمي ، واذا كنت تبحث عن شرح او كورس تطوير تطبيقات الأندرويد فنحن نقدم لكم مجموعة كبيرة من المشاريع الجاهزة والاكواد التي سوف تساعدك على تعلم تطوير تطبيقات أندرويد إلى الوصول الى مرحلة الاحتراف بإذن الله واغلب أكوادنا سهله وبسيطه ويمكن فهمها بسهولة وايضا نقدم شرح لبعض ألاكواد لاننا نسعى لانشاء واحد من اكبر مواقع برمجيات في الشرق الاوسط حيث تمكننا من انشاء اقسام كثيرة وبلغات مختلفة ونسعى الى المزيد بإذن الله حيث في نوفر أكواد الاندرويد ستديو وبلغة الجافا وقريبا سوف نوفر اكواد بالكوتلن ، اذا حدث مشكلة في مشروع ما تعمل عليه تعرف على المشكلة عن طريقة النظر الى logcat سوف تشاهد في هذة القائمة مشاكل التطبيق وكيف يعمل   ولكن قبل كل شيئ هل تعرف أساسيات الاندرويد ؟ ، الاندرويد ستوديو مخصص للكمبيوتر واللابتوب ولا يحتاج الى متطلبات عاليه التشغيل ولكن مع كبر المشروع ستحتاج الى تحديث قطع الهارد ويرد الخاص بجهازك لكي يتحمل العمل الكبير ويوجد الكثير من الاشخاص موجودة لديهم اجهزة قوية


كيفية التعامل مع لأندرويد أستوديو


اولا يجب عليك القيام بعملية download للتطبيق من خلال الموقع الرسمي لهم ويفضل ان تعمل بأحدث اصدار version والذي يتوفر على موقعهم الرسمي وايضا هو مجاني free التحميل والمميز انة يعمل على مختلف operating system مثل نظام لينكس Linux و ويندوز windows والماك Mac وبعد عملية التحميل ثم بتثبيتة install ويجب عليك تثبيت ( إس دي كي  ) لان البرنامج يعمل في بيئة ( environment ( sdk فور الانتهاء من عملية تثبيت البرنامج انقر على create لتبدء ببناء build التطبيق الخاص بك واذا لم تكن متمكن في عمل التطبيقات او ليس لديك خلفية فيمكنك التعلم learn من خلال اخذ كورس سواء اونلاين او اوفلاين ومتابعة موقعنا لاننا نوفر العديد من الاكواد والشروحات في الاندرويد ولكن قبل كل شيئ هل انت متمكن فلغة الجافا ؟ اذا كان الجواب نعم فيمكنك البدء بتعلم اندرويد ستوديوواذا كان لا فأنصحك بتعلم لغة ألجافا Java ،
ايضا البرنامج هو مدعوم من الشركة العملاقة google حيث يتوفر على كثير من الادوات tools التي تساعد المطورين في إنجاز التطبيق project الخاص بهم بسهولة وتنزيل التطبيق app على متجر بلاي .

مميزات Data binding


تقوم بتقليص حجم الكود الخاص بك بشكل رهيب جدا وتجعلة اكثر تنظيما , ويوجد شركات تطلب شخص متمكن من عملية كتابة الكود بواسطة data binding ونحن هنا في موقعنا وموقعكم نحاول تقديم احدث الاكواد البرمجية في مختلف اللغات , ايضا الداتا بندنج ( ربط البيانات ) ظهرت في اصدرات الاندرويد الحديثة لذلك اذا لم يكن الاندرويد ستوديو لديك لا يدعمها فأنصحك بتحديثة وبشدة .


كيفية اضافة مكتبة Data binding


توجة الى build.gradle وقم بإضافة المكتبة التالية واضغط على sync now


android {
    ...
    buildFeatures {
        dataBinding true
    }
}



استخدام Data binding داخل Empty Activity



قم بتصميم الشكل الذي تريدة مع وضع id لكل شكل على سبيل المثال قمت هنا بعمل TextView وكررته ثلاث مرات مع تغيير id


الان فوق اول سطر قم بالضغط على alt + enter سوف يظهر لك خيار convert to data binding انقر عليه



بعد النقر عليه سوف تشاهد تغيير بسيط في الكود اتركة الان وتوجة الى الكود الخاص بالتصميم قم بتعريف 

ActivityMainBinding binding;

بالاعلى كما في الصورة قد يختلف اسم (ActivityMainBinding) لذلك ارجع الى ملف layout وانظر الى اسم الاكتفتي ثم ارجع واكتبة مع زيادة كلمة Bindling
وايضا قم بكتابة الكود التالي  اسفل 
super.onCreate(savedInstanceState);

binding = DataBindingUtil.setContentView(this,R.layout.activity_main);

استبدل activity_main بإسم layout التي تعمل عليها 
والان بكل بساطة اكتب binding. وسوف تشاهد ظهور جميع المصطلحات التي وضعتها في activity_main اختر العنصر ومن ثم استخدامه كما تريد سواء click او غيرة .

ملاحظة : بعد استخدامك لاكواد data binding لن تحتاج الى كود setContentView(R.layout.activity_main); الموجود في تطبيقك وفي الصورة سوف تشاهد اني قمت بتعطيل هذا الكود لانة المسؤال عن عملية R.id.###



طريقة استخدام data binding في عملية setOnClickListener ؟


ارجع الى build.gradle وقم بإضافة الاكواد التالية في المكان المناسب كما في الصورة

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

الاكواد السابقة هي المسؤوله عن جافا 8

داتا بيندنج


بعد اختيار الزر وعمل له setOnClickListener كما تعلمنا سابقا الان انقر على الكلام الموجود باللون الرمادي alt + Enter سوف تجد Replace with lambda اضغط عليها سوف تجد ان الكود اصبح في سطر واحد كام في الصورة
الكود الذي تم تحديد علية خط بالاصفر هو نفس الكود السابق ولكن يختلف في شيئ واحد ان الكود السابق به امر واحد فقط وهي الطباعة اماا الثاني فهو تكرار لاكثر من عملية وفي هذة الحالة نفذت ميثود معينة اكثر من مرة .
في كتابة الكود يختلف الكود الثاني عن الاول بزيادة {} بعد v -> وكتابة الكود الخاص بينهم اي بين { ### } .


تخزين بيانات داخل Data binding 


قم بإنشاء class جديد وقم بتسميتة بأي اسم على سبيل المثال geecoders وقم بتمرير المتغيرات التي تريدها وعمل لها constructor و getter & setter



توجة الى الكود xml واكتب بين   <data></data> الامر التالي

<variable
    name="data"
    type="###" />

اكتب مكان ### اسم class ثم اضغط ctrl + space ليكمل هو الباقي ويصبح الاسم كامل .
وتوجة الى كل text لديك ضع "@{data.}" وبعد . اضغط ctrl + space وسوف يظهر لك جميع المتغيرات الموجودة في geecoders.class الذي قمت بإنشاءة .



ارجع الى كود java الخاص بك واضف الامر التالي  اسفل

 binding = DataBindingUtil.setContentView(this, R.layout.activity_main);


binding.setData(new Geecoders("geecoders"," 1 years " , "www.geecoders.com"));

الان اذا قمت بعمل run للتطبيق سوف تظهر المعلومات التالية geecoders والسطر التالي 1 years والسطر الاخير www.geecoders.com .
ملاحظة : يجب ان يكون اول حرف من اسم class كابتل

استخدام Data binding داخل فراجمنت Fragment


قم بإنشاء BlankFragment وامسح جميع الاكواد بداخلة واترك فقط View onCreateView و onCreate

فوق public void onCreate نقوم بتعريف databinding عن طريق كتابة الامر التالي

FragmentBlankBinding binding;

الان اسفل View onCreateView اكتب 

binding = DataBindingUtil.inflate(inflater,R.layout.fragment_blank,container,false);
return binding.getRoot();


وقم بإالغاء كود 

return inflater.inflate(R.layout.fragment_blank, container, false);

واسفل onViewCreated اكتب

binding.setData(new Geecoders("geecoders"," 1 years " , "www.geecoders.com"));



ملاحظة : كود xml الخاص بي Fragment هو نفس الكود الموجود في الاعلى تم نقلة نسخ لصق لا يوجد تغيير بداخلة .
بالنسبة الى استخدام databinding داخل recyclerview سيتم شرحها في مقالة اخرى لكي لا نطيل عليكم اكثر في هذة المقالة ولتصل الفكرة بدون تعقيد .


احمد محمود هو طالب جامعي يدرس في احدى الجامعات المصرية , تم تاسيس موقع جي كودرس في منتصف عام 2020 حيث يسعى الموقع الى مساعدة الطلاب في تعلم البرمجة وتوفير الاكواد الجاهزة للاستخدام لمساعدة الطلاب ً