تخصيص قائمة ديناميكية جزء من Android Jetpack.
يمكنك تخصيص
RecyclerView
عناصر لتلبية احتياجاتك المحددة. توفر الفئات العادية الموضحة في
إنشاء قوائم ديناميكية باستخدام
RecyclerView جميع الوظائف التي يحتاجها معظم المطورين. في حالات كثيرة، تحتاج فقط إلى تصميم طريقة عرض لكل ملف شخصي وكتابة الرمز لتعديل طرق العرض هذه بالبيانات المناسبة. ومع ذلك، إذا كان لتطبيقك متطلبات محدّدة،
يمكنك تعديل السلوك العادي بعدّة طرق.
ويوضّح هذا المستند بعض التخصيصات المحتملة.
تعديل التصميم
يستخدم RecyclerView
مدير تنسيق لوضع العناصر الفردية على الشاشة وتحديد وقت إعادة استخدام طرق عرض العناصر التي لم تعُد مرئية للمستخدم. لإعادة استخدام طريقة عرض أو إعادة تدويرها، قد يطلب مدير التنسيق من المحوّل استبدال محتوى طريقة العرض بعنصر مختلف عن مجموعة البيانات. بهذه الطريقة، تحسّن طرق عرض إعادة التدوير
الأداء من خلال تجنُّب إنشاء طرق عرض غير ضرورية أو إجراء
عمليات بحث
findViewById()
مكلفة. تتضمن مكتبة دعم Android ثلاثة مدراء للتنسيقات العادية،
يقدّم كل منهم العديد من خيارات التخصيص:
LinearLayoutManager
: يرتّب العناصر في قائمة أحادية البُعد. ويوفّر استخدامRecyclerView
معLinearLayoutManager
وظائف مثل تنسيقListView
.GridLayoutManager
: لترتيب العناصر في شبكة ثنائية الأبعاد، مثل المربعات على رقعة الشطرنج. يؤدي استخدامRecyclerView
معGridLayoutManager
إلى توفير وظائف مثل تنسيقGridView
.StaggeredGridLayoutManager
: لترتيب السلع في شبكة ثنائية الأبعاد، مع إزاحة كل عمود قليلاً عن العمود السابق، مثل النجوم على علم أمريكي.
إذا كانت مدراء التنسيقات هذه لا تناسب احتياجاتك، يمكنك إنشاء ملفك الشخصي من خلال
توسيع
RecyclerView.LayoutManager
الفئة المجرّدة.
إضافة الصور المتحركة للعناصر
عندما يتغير أي عنصر، يستخدم RecyclerView
أداة صور متحركة
لتغيير مظهره. تمثل هذه الصورة المتحركة كائنًا يوسّع فئة
RecyclerView.ItemAnimator
التجريدي. بشكل تلقائي، تستخدم السمة RecyclerView
DefaultItemAnimator
لتوفير الحركة. إذا أردت توفير صور متحركة مخصّصة، يمكنك تحديد
كائن الرسوم المتحركة الخاص بك عن طريق توسيع
RecyclerView.ItemAnimator
.
تفعيل اختيار عناصر القائمة
تتيح مكتبة recyclerview-selection
للمستخدمين اختيار عناصر في قائمة RecyclerView
باستخدام الإدخال باللمس أو الماوس. يتيح لك هذا الاحتفاظ بالتحكم في العرض التقديمي المرئي لعنصر محدد. يمكنك أيضًا الاحتفاظ بإمكانية التحكم في السياسات التي تتحكّم في سلوك الاختيار، مثل العناصر المؤهَّلة للاختيار وعدد العناصر التي يمكن اختيارها.
لإضافة إتاحة الاختيار إلى مثيل RecyclerView
، اتّبِع الخطوات التالية:
- حدِّد نوع مفتاح الاختيار الذي تريد استخدامه، ثم أنشِئ
ItemKeyProvider
.هناك ثلاثة أنواع رئيسية يمكنك استخدامها لتحديد العناصر المحدّدة:
- السمة
Parcelable
وفئاتها الفرعية، مثلUri
String
Long
للحصول على معلومات تفصيلية حول أنواع مفاتيح الاختيار، يُرجى الاطّلاع على
SelectionTracker.Builder
. - السمة
- تنفيذ
ItemDetailsLookup
. - ويمكنك تعديل كائنات
View
في العنصرRecyclerView
لتوضيح ما إذا كان المستخدم يختارها أو يلغي اختيارها.لا توفّر مكتبة العناصر المحددة زخرفة مرئية تلقائية للعناصر المحددة. عليك تقديم هذه السمة عند تنفيذ
onBindViewHolder()
. وننصح باتّباع النهج التالي:- في
onBindViewHolder()
، يمكنك استدعاءsetActivated()
، وليسsetSelected()
، على الكائنView
باستخدامtrue
أوfalse
، وذلك بناءً على ما إذا تم اختيار العنصر أم لا. - يمكنك تعديل تصميم العرض لتمثيل الحالة المفعَّلة. ننصحك باستخدام مورد قائمة حالة اللون لضبط التصميم.
- في
- استخدِم
ActionMode
لتزويد المستخدم بالأدوات اللازمة لتنفيذ إجراء بشأن الاختيار. - تنفيذ أي إجراءات ثانوية مفسَّرة
- اجمع كل العناصر باستخدام "
SelectionTracker.Builder
". - أضِف مجموعة محددة في أحداث مراحل النشاط.
تتيح السمة ItemDetailsLookup
لمكتبة التحديدات إمكانية الوصول إلى معلومات حول RecyclerView
عنصر تم منحها قيمة MotionEvent
.
إنّه مصمّم بشكل فعال لمثيلات
ItemDetails
التي يتم الاحتفاظ بنسخة احتياطية منها من خلال
مثيل RecyclerView.ViewHolder
أو استخراجه منه.
سجِّل
SelectionTracker.SelectionObserver
ليتم إعلامك عند تغيير أحد الخيارات. عند إنشاء مجموعة مختارة لأول مرة،
ابدأ في ActionMode
لتقديم هذا الخيار للمستخدم وتوفير
إجراءات محددة. على سبيل المثال، يمكنك إضافة زر حذف إلى شريط ActionMode
وربط سهم الرجوع على الشريط بإزالة النص المحدَّد. عندما يصبح الاختيار فارغًا، إذا أمحو المستخدم الاختيار في آخر مرة، يمكنك إنهاء وضع الإجراء.
في نهاية مسار معالجة الفعاليات، قد ترصد المكتبة أنّ المستخدم يحاول تفعيل عنصر من خلال النقر عليه أو
يحاول سحب عنصر أو مجموعة من العناصر المحددة. ويجب التفاعل مع هذه التفسيرات من خلال تسجيل المستمع المناسب. لمزيد من المعلومات، يُرجى الاطّلاع على "SelectionTracker.Builder
".
يوضّح المثال التالي كيفية تجميع هذه القطع معًا:
Kotlin
var tracker = SelectionTracker.Builder( "my-selection-id", recyclerView, StableIdKeyProvider(recyclerView), MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build()
Java
SelectionTracker tracker = new SelectionTracker.Builder<>( "my-selection-id", recyclerView, new StableIdKeyProvider(recyclerView), new MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build();
لإنشاء مثيل
SelectionTracker
، يجب أن يوفر تطبيقك
السمة RecyclerView.Adapter
نفسها التي تستخدمها لإعداد RecyclerView
إلى
SelectionTracker.Builder
. لهذا السبب، بعد إنشاء المثيل SelectionTracker
، أدخِله في RecyclerView.Adapter
. وبخلاف ذلك، لا يمكنك التحقّق من الحالة
التي تم اختيارها لعنصر من خلال طريقة onBindViewHolder()
.
للحفاظ على حالة الاختيار في جميع مراحل نشاط النشاط، يجب أن يستدعي تطبيقك طريقتَي
onSaveInstanceState()
وonRestoreInstanceState()
من أداة تتبُّع الاختيار من خلال الطريقتَين
onSaveInstanceState()
وonRestoreInstanceState()
في النشاط، على التوالي. يجب أن يوفّر تطبيقك أيضًا معرّف اختيار فريدًا إلى
الدالة الإنشائية SelectionTracker.Builder
. ويجب توفير رقم التعريف هذا لأنّه
قد يتضمّن النشاط أو الجزء أكثر من قائمة مختلفة يمكن اختيارها،
ويجب الاحتفاظ بجميع هذه القوائم في حالتها المحفوظة.
مراجع إضافية
يُرجى الاطّلاع على المراجع التالية للحصول على معلومات إضافية.
- تطبيق دوار الشمس التجريبي، الذي يستخدم
RecyclerView
. - استخدِم RecyclerView لعرض قائمة قابلة التمرير فيها درس تطبيقي حول الترميز.
- الدرس التطبيقي حول ترميز Android Kotlin Fundamentals: RecyclerView Fundamentals