شرح بسيط عن الـRecyclerView بالاندرويد

بسم الله الرحمن الرحيم

الكثير منا يواجه احياناً عندما يريد أن يقوم بتنظيم مجموعة من البيانات على هيئة قائمة (List) أو في شكل جدولي (Grid).

وغالباً ما نستخدم لذلك القائمة المعتادة (ListView) والتي تقوم بتخزين البيانات كلها في وقت واحد على شكل قائمة. مطوري الاندرويد اكتشفو أنه لو كانت عدد العناصر كثيرة  فهذا يؤدي حمل زائد على الذاكرة.

ووجدوا الحل, عندما قاموا بتطوير ما يعرف بـ  (RecyclerView), بمعنى العنصر القابل للتدوير.

حيث أن فرق الـ (RecyclerView) عن (ListView) هو : يقوم بإنشاء العناصر المعروضة في الشاشة فقط, ومن ثم في كل مرة يقوم بتحديث البيانات, داخل الصف الموجود, وليس انشاء صف جديد, وهذا ما يجعله محبب إلى الذاكرة بشكل أفضل.

إذا الآن فهمنا ما هو عنصر الـ لذلك دعونا نأخذ مثال صغير على ذلك, وهو القيام بإنشاء قائمة تحتوي على مجموعة من الأسماء مع صور.

في البداية وبعد القيام بإنشاء مشروع جديد, نقوم بإضافة مصفوفتين, مصفوفة من نوع strnig لتحتوي على الأسماء, ومصفوفة أخرى من نوع int لتحتوي على مسارات الصور.

ولتكن مثلاً :

والآن لنقوم بإنشاء لياوت تصميم خفيف وبسيط للعنصر الواحد من القائمة, ولنفترض إن اسم الملف : row.xml

و نضعه بداخله الكود التالي :

إي النتيجة التالية :

و الآن سوف نقوم بإنشاء كلاس جديد بإسم Adapter وسوف يقوم بربط البيانات ببعضها وسنجعله يرث من  Adapter.RecyclerView و وننشأ الـconstructor ونجعله يستقبل البيانات والكونتكست ليكون بهذا الشكل :

والآن سوف نقوم بعمل (override@) للدوال الاساسية من هذا الكلاس وهم onCreateViewHolder و onBindViewHolder و getItemCount وكل دالة من هذة الدوال لها اهمية, سوف نقوم بالبدأ بدالة create on وهي الدالة التي تستدعى عند بداية انشاء الـ Recycler وتكون بهذا الشكل :

حيث إننا في السطر الأول قمنا بتعريف كائن من النوع View حيث سنقوم بربط الصف الذي انشئناه في السابق عن طريق عمل inflate لهذا الملف row.xml ثم نقوم بتعريف كائن من كلاس VieoHolders وهو كلاس سننشأه بعد قليل.
ثم سنقوم بعمل (override@) للدالة onBindViewHolder وهي الدالة المسؤولة عن توزيع البيانات والحركة التي سوف تكون عند بدأ أو توزيع بيانات لصف جديد إي هي المسؤولة عن ملأ الصف الجديد.
فى حالتنا هذه سنقوم بجعلها تملأ البيانات من المصفوفة التي مررناها للكلاس منذ قليل وستكون بهذة الصورة :

الآن سوف نقوم بعمل(override@) للدالة getItemCount وهي الدالة التي سنخبرها بعدد العناصر التي سوف ننشئها وهنا سيكون عدد العناصر المنشئة هو عدد عناصر المصفوفة وستكون كالتالي :

ليصبح الشكل قبل النهائي لكلاس الـ Adapter :

بقى فقط أن نقوم بإنشاء كلاس ViewHolders الذي سوف نقوم من خلاله بربط المكونات الداخلية للصف الواحد
وساقوم ايضاً بعمل اكشن عند الضغط على إى صف لـ يخرج لنا رسالة toast برقم الصف ويكون الشكل النهائى لهذا الكلاس بهذا الشكل :

Adapter.java

Adapter.java

الآن لنقوم بإضافة RecyclerView إلى صفحة main_activity.xml فيصبح الملف بهذا الشكل :

ونذهب الى الاكتفتي MainActivity ونقوم بربط هذه الـ recycler بـ الادابتر او موزع البيانات فيكون الشكل النهائي هو :

MainActivity.java

MainActivity.java

الصورة النهائية لما قمنا به هي :

هل لاحظت إنها على شكل قائمة منسدلة ! .. ما رأيكم لو قمنا بتعديلات بسيطة لتصبح على شكل جدول .. إي gridview > لنقوم بذلك ونشاهد النتيجة معاً ,,

نذهب إلى الملف row.xml ونقوم بتعديلها ليصبح كالتالي :

إي كالصورة التالية :

و بعد ذلك نذهب إلى الاكتفتي MainActivity ونقوم بتعديل السطر التالي :

إلى السطر :

حيث رقم 3 هو عدد العناصر في الصف الواحد إي ثلاثة أعمدة.

وبعد التشغيل يصبح لدينا النتيجة التالية :

وبهذا يكون انتهى الدرس والسلام عليكم ورحمة الله وبركاته
المشروع على جيت هب (github), اضغط على سبحان الله.

* هذه المقال تم مشاركتها من أصدقاء مجموعة اندرودي عربي.
الكاتب : Ali hrhera

شاهد أيضاً

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

بسم الله الرحمن الرحيم الكثير من مبرمجي الاندرويد يبحثون عن خصائص أو مميزات ليضيفوها في …

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

+ 26 = 29

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.