تخصيص قائمة ديناميكية جزء من Android Jetpack.

تجربة طريقة ComposeAllowed
Jetpack Compose هي مجموعة أدوات واجهة المستخدم التي ننصح بها لنظام التشغيل Android. تعرَّف على كيفية استخدام التنسيقات في Compose.

يمكنك تخصيص 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، يمكنك اتّباع الخطوات التالية: الخطوات التالية:

  1. حدِّد نوع مفتاح التحديد الذي تريد استخدامه، ثم أنشئ ItemKeyProvider

    هناك ثلاثة أنواع رئيسية يمكنك استخدامها لتحديد العناصر المحددة:

    للحصول على معلومات تفصيلية حول أنواع مفاتيح الاختيار، يُرجى الاطّلاع على SelectionTracker.Builder

  2. التنفيذ ItemDetailsLookup
  3. يتيح ItemDetailsLookup لمجموعة الاختيارات الوصول إلى المحتوى. معلومات حول RecyclerView عنصر وفقًا MotionEvent إنه مصنع فعال ItemDetails الحالات التي يتم نسخها احتياطيًا أو استخراجها من RecyclerView.ViewHolder مثال.

  4. تعديل العنصر View عناصر في RecyclerView ليعكس ما إذا كان المستخدم يختار أو وإلغاء اختيارها.

    لا توفر مكتبة الاختيارات ديكورات مرئية افتراضية العناصر المحددة. تقديم هذا الشرط عند التنفيذ onBindViewHolder() ننصح باتّباع النهج التالي:

    • بعد onBindViewHolder()، يمكنك الاتصال setActivated() - ليس setSelected() - مفعَّل كائن View مع true أو false، اعتمادًا على ما إذا كان العنصر .
    • عدِّل نمط الملف الشخصي للإشارة إلى الحالة مفعَّلة. أر ننصحك باستخدام حالة اللون قائمة الموارد لضبط النمط.
  5. استخدام "ActionMode" لتزويد المستخدم بالأدوات اللازمة لتنفيذ إجراء ما بشأن التحديد.
  6. تسجيل SelectionTracker.SelectionObserver ليتم إعلامك عند تغيير أحد الاختيارات. عند إنشاء تحديد لأول مرة، ابدأ ActionMode لعرض هذا العرض للمستخدم وتقديمه إجراءات محددة محددة. على سبيل المثال، يمكنك إضافة زر حذف إلى شريط "ActionMode" وربط سهم الرجوع في الشريط للمسح التحديد. عندما يصبح التحديد فارغًا - في حال محو المستخدم تحديد المرة الأخيرة وهي إنهاء وضع الإجراء.

  7. تنفيذ أي إجراءات ثانوية مفسَّرة
  8. في نهاية مسار معالجة الأحداث، قد تحدد المكتبة أن المستخدم يحاول تفعيل أحد العناصر من خلال النقر عليه أو محاولة سحب عنصر أو مجموعة عناصر محددة. التفاعل مع هذه العناصر من خلال تسجيل المستمع المناسب. لمزيد من المعلومات، المعلومات، راجع SelectionTracker.Builder

  9. يمكنك تجميع كل ما تريد باستخدام "SelectionTracker.Builder".
  10. يوضح المثال التالي كيفية وضع هذه القطع معًا:

    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().

  11. تضمين التحديد في النشاط أحداث مراحل النشاط
  12. للحفاظ على حالة الاختيار في جميع أحداث مراحل النشاط، سيتطلّب تطبيقك يجب استدعاء أداة تتبع التحديد onSaveInstanceState() أو onRestoreInstanceState() طرق من نتائج النشاط onSaveInstanceState() أو onRestoreInstanceState() على التوالي. يجب أن يقدِّم تطبيقك أيضًا معرّف اختيار فريدًا الدالة الإنشائية SelectionTracker.Builder. هذا المعرّف مطلوب للأسباب التالية: نشاط أو جزء قد يحتوي على أكثر من قائمة واحدة مميزة يمكن تحديدها، والتي يلزم استمرارها جميعًا بحالتها المحفوظة.

مصادر إضافية

راجِع المراجع التالية للحصول على معلومات إضافية.