تخصيص قائمة ديناميكية جزء من 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.