Recyclerview

عرض مجموعات كبيرة من البيانات في واجهة المستخدم مع تقليل استخدام الذاكرة إلى الحدّ الأدنى

يسرد هذا الجدول جميع العناصر في المجموعة androidx.recyclerview.

العناصر الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
recyclerview 1.4.0 - - -
recyclerview-selection 1.2.0 - - 1.3.0-alpha01
تم إجراء آخر تعديل على هذه المكتبة في: 17 ديسمبر 2025

تحديد الاعتماديات

لإضافة اعتمادية على RecyclerView، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:

Groovy

dependencies {
    implementation "androidx.recyclerview:recyclerview:1.4.0"
    // For control over item selection of both touch and mouse driven selection
    implementation "androidx.recyclerview:recyclerview-selection:1.2.0"
}

Kotlin

dependencies {
    implementation("androidx.recyclerview:recyclerview:1.4.0")
    // For control over item selection of both touch and mouse driven selection
    implementation("androidx.recyclerview:recyclerview-selection:1.2.0")
}

لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات البناء.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.4

الإصدار 1.4.0

‫15 يناير 2025

تم طرح androidx.recyclerview:recyclerview:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.3.2 من RecyclerView

  • Adaptive دعم معدّل التحديث: RecyclerView يتم الآن استدعاء setFrameContentVelocity عند التمرير سريعًا من خلال OverScroller (مثل التمرير السريع أو التمرير السلس). (I8f8a4)

الإصدار 1.4.0-rc01

‫18 سبتمبر 2024

تم إصدار androidx.recyclerview:recyclerview:1.4.0-rc01 بدون أي تغييرات منذ 1.4.0-alpha02/. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.

التغييرات منذ الإصدار 1.3.2

ملاحظة حول التوافق: لن يتم تجميع هذا الإصدار إلا مع حزمة تطوير البرامج (SDK) للإصدار 35 من واجهة برمجة التطبيقات (Vanilla Ice Cream) أو إصدار أحدث. إذا ظهرت لك تحذيرات بشأن "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (AGP) عند الترقية، يمكنك إيقافها.

الميزات الجديدة

  • Adaptive دعم معدّل التحديث: RecyclerView يتم الآن استدعاء setFrameContentVelocity عند التمرير سريعًا من خلال OverScroller (مثل التمرير السريع أو التمرير السلس). (I8f8a4)

تغييرات واجهة برمجة التطبيقات

  • أضِف واجهة برمجة التطبيقات RecyclerView$LayoutManager#isLayoutReversed. (I4970e)

التغييرات الأخرى

  • تمت إزالة التحديد اليدوي لنطاق الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون "مكوّن Android الإضافي لبرنامج Gradle" بالترقية إلى الإصدار 8.1 أو إصدار أحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)
  • أضِف نوع عرض العنصر إلى RecyclerView لربط/إنشاء أقسام التتبُّع، وصنِّف عمليات الجلب المُسبَق لـ RecyclerView على أنّها "إجبارية - مطلوبة في الإطار التالي" إذا كان من المتوقّع استخدامها في الإطار التالي، وبالتالي يجب البدء في تنفيذها في أقرب وقت ممكن. (I8ec3e، b/309523615)
  • عدِّل compileSdk إلى 35 (راجِع "ملاحظة التوافق" أعلاه للحصول على التفاصيل). 5dc41be

الإصدار 1.4.0-beta01

‫21 أغسطس 2024

تم إصدار androidx.recyclerview:recyclerview:1.4.0-beta01 بدون أي تغييرات منذ 1.4.0-alpha02. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.

ملاحظة حول التوافق: لن يتم تجميع هذا الإصدار إلا مع حزمة تطوير البرامج (SDK) للإصدار 35 من واجهة برمجة التطبيقات (Vanilla Ice Cream) أو إصدار أحدث. إذا ظهرت لك تحذيرات بشأن "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (AGP) عند الترقية، يمكنك إيقافها.

الإصدار 1.4.0-alpha02

‫7 أغسطس 2024

تم طرح androidx.recyclerview:recyclerview:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 هذه التعديلات.

ملاحظة حول التوافق: لن يتم تجميع هذا الإصدار إلا مع حزمة تطوير البرامج (SDK) للإصدار 35 من واجهة برمجة التطبيقات (Vanilla Ice Cream) أو إصدار أحدث. إذا ظهرت لك تحذيرات بشأن "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (AGP) عند الترقية، يمكنك إيقافها.

الميزات الجديدة

  • إتاحة معدّل التحديث المتغيّر: تستدعي السمة RecyclerView الآن الدالة setFrameContentVelocity عند التمرير سريعًا من خلال OverScroller (مثل التمرير السريع أو التمرير السلس). (I8f8a4)

تغييرات واجهة برمجة التطبيقات

  • واجهات برمجة التطبيقات المتوقّفة نهائيًا ViewCompat.LAYOUT_DIRECTION_ (I51710، b/317055535)
  • أضِف واجهة برمجة التطبيقات RecyclerView$LayoutManager#isLayoutReversed. (I4970e)

التغييرات الأخرى

  • تمت إزالة التحديد اليدوي لنطاق الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون "مكوّن Android الإضافي لبرنامج Gradle" بالترقية إلى الإصدار 8.1 أو إصدار أحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (Ia60e0، b/345472586)
  • أضِف نوع عرض العنصر إلى RecyclerView لربط/إنشاء أقسام التتبُّع، وصنِّف عمليات الجلب المُسبَق لـ RecyclerView على أنّها "إجبارية - مطلوبة في الإطار التالي" إذا كان من المتوقّع استخدامها في الإطار التالي، وبالتالي يجب البدء في تنفيذها في أقرب وقت ممكن. (I8ec3e، b/309523615)
  • عدِّل compileSdk إلى 35 (راجِع "ملاحظة التوافق" أعلاه للحصول على التفاصيل). 5dc41be

المساهمة الخارجية

  • تم إيقاف GestureDetectorCompat نهائيًا لأنّ GestureDetector أصبح متاحًا من minSdk. (Icc4cd)

الإصدار 1.4.0-alpha01

‫18 أكتوبر 2023

تم طرح androidx.recyclerview:recyclerview:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • أضِف واجهة برمجة التطبيقات RecyclerView$LayoutManager#isLayoutReversed. (I4970e)

إصلاح الأخطاء

  • إصلاح خطأ يتسبّب في حدوث أعطال متقطّعة أثناء عرض الصور المتحركة (I42f22b) (مضمّن أيضًا في الإصدار 1.3.2)

الإصدار 1.3.2

الإصدار 1.3.2

‫18 أكتوبر 2023

تم طرح androidx.recyclerview:recyclerview:1.3.2. يتضمّن الإصدار 1.3.2 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي كان يتسبب في حدوث أعطال متقطّعة أثناء عرض الصور المتحركة. (I42f22b)

الإصدار 1.3.1

الإصدار 1.3.1

‫26 يوليو 2023

تم إصدار androidx.recyclerview:recyclerview:1.3.1 بدون أي تغييرات منذ الإصدار 1.3.1-rc01. يتضمّن الإصدار 1.3.1 هذه التعديلات.

للاطّلاع على ملاحظات الإصدار السابق، يُرجى الرجوع إلى صفحة ملاحظات الإصدار.

الإصدار 1.3.1-rc01

‫24 مايو 2023

تم طرح androidx.recyclerview:recyclerview:1.3.1-rc01. يتضمّن الإصدار 1.3.1-rc01 هذه التعديلات.

على مستخدمي ViewPager2 التحديث إلى الإصدار 1.1.0-beta02 على الأقل عند التحديث إلى هذا الإصدار من RecyclerView لتجنُّب حدوث أعطال.

تغييرات واجهة برمجة التطبيقات

  • إضافة طريقتَي setDebugAssertionsEnabled وsetVerboseLoggingEnabled الجديدتَين اللتَين يمكن أن تساعدا في تصحيح الأخطاء المتعلقة بـ RecyclerView في التطبيقات (I514b9)

إصلاح الأخطاء

  • إصلاح الأعطال لمستخدمي ViewTreeLifecycleOwner (بما في ذلك ComposeView) من خلال إعادة ربط طرق العرض التي تم فصلها مؤقتًا عند استدعاء onBind (I7244f2c وb/265347515 وb/283288295)

الإصدار 1.3.0

الإصدار 1.3.0

‫8 مارس 2023

تم إصدار androidx.recyclerview:recyclerview:1.3.0 بدون أي تغييرات منذ الإصدار 1.3.0-rc01. يتضمّن الإصدار 1.3.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.2.0

  • يتضمّن هذا الإصدار تحسينات في الأداء (تم تضمينها سابقًا في الإصدارَين 1.3.0-alpha02 و1.3.0-beta01) عند استخدامه مع Jetpack Compose. إذا كنت تستخدم Compose 1.2.0-beta02 أو إصدارًا أحدث وكنت تستخدم MyComposeAdapter وDisposeOnViewTreeLifecycleDestroyed ViewCompositionStrategy الموضّحة في إرشادات التشغيل التفاعلي السابقة، عليك إزالة هذه العناصر، لأنّها لم تعُد تحسّن الحالة التلقائية.
  • تمت إضافة طريقة ConcatAdapter.getWrappedAdapterAndPosition جديدة للسماح باسترداد معلومات المحوّل البرمجي المغلف في الحالات التي لا يتوفّر فيها ViewHolder، مثل SpanSizeLookup (I2bd4c، b/191543920)

الإصدار 1.3.0-rc01

‫21 سبتمبر 2022

تم طرح androidx.recyclerview:recyclerview:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.

  • لم يتم إجراء أي تغييرات منذ آخر إصدار

الإصدار 1.3.0-beta02

‫10 أغسطس 2022

تم طرح androidx.recyclerview:recyclerview:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة تعليقات توضيحية بشأن إمكانية قبول القيم الخالية التي تمت إضافتها في الإصدار ‎1.3.0-beta01 لأنّها تمثّل تغييرًا كبيرًا غير متوافق مع المصدر لمستخدمي Kotlin (I7a258 وI1557e6 وI8db76).

الإصدار 1.3.0-beta01

‫29 يونيو 2022

تم طرح androidx.recyclerview:recyclerview:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.

الميزات الجديدة

  • يحتوي هذا الإصدار التجريبي على تحسينات في الأداء (تم تضمينها سابقًا في 1.3.0-alpha02 عند استخدامه مع Jetpack Compose). إذا كنت تستخدم Compose 1.2.0-beta02 أو إصدارًا أحدث وكنت تستخدم MyComposeAdapter وDisposeOnViewTreeLifecycleDestroyed ViewCompositionStrategy الموضّحة في إرشادات التشغيل التفاعلي السابقة، عليك إزالة هذه العناصر، لأنّها لم تعُد تحسّن الحالة التلقائية.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة تعليقات توضيحية بشأن إمكانية قبول القيم الخالية لعدد من الطرق والمَعلمات من أجل تحسين تحذيرات أداة Lint لمستخدمي Java وتحسين إمكانية التشغيل التفاعلي لمستخدمي Kotlin. قد يكون هذا التغيير غير متوافق مع بعض مستخدمي Kotlin وقد يؤدي إلى ظهور تحذيرات/أخطاء إضافية في أداة Lint لبعض مستخدمي Java. (I61829، b/236487044؛ Ia0b6f؛ I6f119، b/236487209؛ Ibe1de، b/236487210)

إصلاح الأخطاء

  • تأكَّد من أنّ خدمات تسهيل الاستخدام تتعامل مع الشبكات على أنّها شبكات من خلال ضبط اسم فئة معلومات عقدة تسهيل الاستخدام. (I12812)

الإصدار 1.3.0-alpha02

‫6 أبريل 2022

تم طرح androidx.recyclerview:recyclerview:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • إضافة طرق تجريبية BuildCompat لحِزم SDK المستقبلية (Iafd82، b/207528937)
  • تمت إضافة طريقة ConcatAdapter.getWrappedAdapterAndPosition جديدة للسماح باسترداد معلومات المحوّل المغلَّف في الحالات التي لا يتوفّر فيها ViewHolder، مثل SpanSizeLookup (I2bd4c، b/191543920)

إصلاح الأخطاء

  • التكامل مع مكتبة PoolingContainer الجديدة في AndroidX (Ib89d2)
  • تعديل مسافة التمرير لإجراء تسهيل الاستخدام (If74ae)

الإصدار 1.3.0-alpha01

‫15 سبتمبر 2021

تم طرح androidx.recyclerview:recyclerview:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.

الميزات الجديدة

  • تمت إضافة إمكانية التمرير السريع في RecyclerView. (Iab877)

الإصدار 1.3.0 من RecyclerView-Selection

الإصدار 1.3.0-alpha01

‫17 ديسمبر 2025

تم طرح androidx.recyclerview:recyclerview-selection:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • السماح لنقطة الاتصال داخل التحديد بإزالة التحديد الحالي (I0eae7، b/389814214): يمنح هذا الخيار المطوّرين تحكّمًا أكبر في ما إذا كانت أي عناصر أخرى تم تحديدها مسبقًا ستبقى محددة أو سيتم إلغاء تحديدها عند النقر على RecyclerView لاختيار عنصر.

الإصدار 1.2.0 من RecyclerView-Selection

الإصدار 1.2.0

‫20 مايو 2025

تم طرح androidx.recyclerview:recyclerview-selection:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.1.0

  • إصلاح المشكلة التي تؤدي إلى تحويل النقرات إلى عمليات سحب عند تحريك الماوس بشكل طفيف
  • تم إصلاح مشكلة فقدان ربط المفتاح/الموضع في KeyProvider أثناء عدم إعادة تدوير الإدخال بعد.

الإصدار 1.2.0-rc01

‫7 مايو 2025

تم طرح androidx.recyclerview:recyclerview-selection:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • إصلاح المشكلة التي تؤدي إلى تحويل النقرات إلى عمليات سحب عند تحريك الماوس بشكل طفيف (Ie9106)

الإصدار 1.2.0-beta01

‫9 أبريل 2025

تم طرح androidx.recyclerview:recyclerview-selection:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • واجهات برمجة التطبيقات المتوقّفة نهائيًا ViewCompat.LAYOUT_DIRECTION_ (I51710، b/317055535)

إصلاح الأخطاء

  • تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية من JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict (هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (I03b80، b/326456246)

الإصدار 1.2.0-alpha01

‫5 أيار (مايو) 2021

تم طرح androidx.recyclerview:recyclerview-selection:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة فقدان ربط المفتاح/الموضع في KeyProvider أثناء عدم إعادة تدوير الإدخال بعد. (b/145767095)

الإصدار 1.2.1

الإصدار 1.2.1

‫2 حزيران (يونيو) 2021

تم طرح androidx.recyclerview:recyclerview:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.

إصلاح الأخطاء

  • تعرض ViewHolders داخل ConcatAdapter الآن موضع المحوّل الصحيح عند طلب البحث في معاودة الاتصال onViewRecycled. (b/187339376)

الإصدار 1.2.0

الإصدار 1.2.0

‫7 نيسان (أبريل) 2021

تم طرح androidx.recyclerview:recyclerview:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.

التغييرات الرئيسية منذ الإصدار 1.1.0

ConcatAdapter: يتيح لك هذا المحوّل الجديد ربط محوّلات متعدّدة بسهولة على RecyclerView نفسه. لمزيد من المعلومات، يُرجى الاطّلاع على منشور المدوّنة.

استعادة الحالة عند الطلب: يمكن الآن لمحوّل RecyclerView تأخير استعادة الحالة إلى حين تحميل محتواه. لمزيد من التفاصيل، يُرجى الاطّلاع على المستندات.

الإصدار 1.2.0-rc01

‫24 مارس 2021

تم طرح androidx.recyclerview:recyclerview:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تتضمّن السمة ConcatAdapter.Config.Builder الآن قيمًا تلقائية تتطابق مع Config.DEFAULT (b/157169835)

الإصدار 1.2.0-beta02

‫24 شباط (فبراير) 2021

تم طرح androidx.recyclerview:recyclerview:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كان فيها الحشو العلوي يتسبب في تحرّك التوهّج الناتج عن التمرير السريع إلى الأعلى في المساحة المحشوة، بدلاً من التحرك إلى الأسفل من أجل مراعاة الحشو. (I6b61d، b/118399122)

الإصدار 1.2.0-beta01

‫2 ديسمبر 2020

تم إصدار androidx.recyclerview:recyclerview:1.2.0-beta01 بدون أي تغيير منذ 1.2.0-alpha06. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.

الإصدار 1.2.0-alpha06

1 تشرين الأول (أكتوبر) 2020

تم طرح androidx.recyclerview:recyclerview:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه التعديلات.

الميزات الجديدة

  • تمت إضافة إمكانية إضافة عدة RecyclerListener. (I70ad8، b/145767095)

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف RecyclerView.setRecyclerListener(RecyclerListener) نهائيًا. (I70ad8، b/145767095)

الإصدار 1.2.0-alpha05

‫22 تموز (يوليو) 2020

تم طرح androidx.recyclerview:recyclerview:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تؤدي إلى عدم نقل التركيز عند التركيز على عنصر واحد في RecyclerView ثم محاولة نقل التركيز إلى الأمام أو الخلف. (6f36b3)
  • تم إصلاح ArrayIndexOutOfBoundsException في StaggeredGridLayoutManager (49b601 وb/122303625 وb/74877618 وb/160193663 وb/37086625)
  • تم إصلاح خطأ في القياس كان يؤدي في ظروف معيّنة إلى عدم عرض RecyclerView لعناصره بشكل غير مناسب. (89040c، b/138734786)

المساهمات الخارجية

  • نشكر Kolin Krewinkel بالنيابة عن Facebook على هذه المساهمة.

الإصدار 1.2.0-alpha04

‫24 يونيو 2020

تم طرح androidx.recyclerview:recyclerview:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة تسمية MergeAdapter إلى ConcatAdapter لتجنُّب أي التباس بشأن سلوكيات دمج البيانات المختلفة (c0540c، b/158019211).

إصلاح الأخطاء

  • تحسينات على التمرير التلقائي عند إزالة جميع العناصر المرئية (fe8670، b/154124815)

الإصدار 1.2.0-alpha03

‫29 نيسان (أبريل) 2020

تم طرح androidx.recyclerview:recyclerview:1.2.0-alpha03. يتضمّن الإصدار 1.2.0-alpha03 هذه التعديلات.

الميزات الجديدة

  • يتضمّن RecyclerView الآن طريقة nestedScrollBy تتيح التمرير الآلي الذي يتوافق مع التمرير المتداخل: (Ibaa58)

الإصدار 1.2.0-alpha02

1 نيسان (أبريل) 2020

تم طرح androidx.recyclerview:recyclerview:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.

هذا الإصدار والإصدارات الأحدث من RecyclerView غير متوافقة مع الإصدارات الأقدم من ViewPager2. إذا كنت تستخدم حاليًا الإصدار androidx.viewpager2:viewpager2:1.0.0 أو إصدارًا أقدم، احرص على التحديث إلى الإصدار androidx.viewpager2:viewpager2:1.1.0-alpha01.

الميزات الجديدة

  • MergeAdapter

    • MergeAdapter: محوّل RecyclerView جديد يمكنه دمج عدة محوّلات بشكل خطي.
    MyAdapter adapter1 = ...;
    AnotherAdapter adapter2 = ...;
    MergeAdapter merged = new MergeAdapter(adapter1, adapter2);
    recyclerView.setAdapter(mergedAdapter);
    

    بالنسبة إلى العينة أعلاه، ستعرض MergeAdapter العناصر من adapter1 متبوعةً بـ adapter2.

  • RecyclerView.Adapter استعادة الحالة عند الطلب:

    • تمت إضافة واجهة برمجة تطبيقات جديدة إلى فئة RecyclerView.Adapter تتيح للمحوّل التحكّم في وقت استعادة حالة التنسيق.

    • على سبيل المثال، يمكنك الاتصال بما يلي:

    myAdapter.setStateRestorationStrategy(StateRestorationStrategy.WHEN_NOT_EMPTY);
    

    لجعل RecyclerView ينتظر إلى أن يصبح المحوّل غير فارغ قبل استعادة موضع التمرير.

  • لن تتم تعبئة CollectionInfo وCollectionItemInfo تلقائيًا بعد الآن.

    • إذا أردت أن تستمر "خدمات تسهيل الاستخدام" (مثل Talkback) في إعلام المستخدم بالعدد وفهرس العناصر، عليك ملء CollectionInfo وCollectionItemInfo بنفسك.

    • لم تعُد هذه العناصر تظهر في إطار العمل لأنّه لا يمكنه تحديد عدد العناصر كما يراها المستخدم (مثل الفواصل أو العناوين أو عناصر RecyclerView التي تمثّل عناصر متعدّدة).

إصلاح الأخطاء

  • يتجنّب RecyclerView الآن التثبيت على طرق العرض خارج إطار العرض عند تغيير حجم إطار العرض
  • تم إصلاح خطأ في DiffUtil قد يؤدي إلى احتساب الفرق بشكل غير صحيح عند تكرار عنصر أصلي في القائمة الأولى عدة مرات في القائمة الثانية. (b/123376278)

الإصدار 1.2.0-alpha01

‫18 كانون الأول (ديسمبر) 2019

تم طرح androidx.recyclerview:recyclerview:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشاكل بسيطة في FastScroller متعلقة بالرسم من اليمين إلى اليسار ودقة اللمس (b/143789932 وaosp/1130438).
  • تم إصلاح عُطل في ItemTouchHelper عند إزالته من RecyclerView أثناء تشغيل رسومات ItemTouchHelper المتحركة (b/140447176، aosp/1167575)

الإصدار 1.1.0

الإصدار 1.1.0

‫20 تشرين الثاني (نوفمبر) 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.0.0

  • تأخذ PagerSnapHelper وLinearSnapHelper الآن في الاعتبار مساحة RecyclerView المتروكة بغض النظر عن قيمة clipToPadding (b/139452422 وb/139012032 وaosp/1103182 وaosp/1106715 وaosp/1130728)
  • تم إيقاف RecyclerView.setLayoutTransition(LayoutTransition) نهائيًا، وسيتم عرض الخطأ IllegalArgumentException عند استدعائه بقيمة غير فارغة. يمكنك استخدام RecyclerView.setItemAnimator(ItemAnimator) كبديل. (aosp/839414)
  • aosp/723649: تنفّذ أداة RecyclerView الآن واجهة NestedScrollingChild3، ما يتيح إعلامها عندما تتوقف جميع عناصرها الرئيسية المتداخلة التي يمكن التمرير فيها عن استهلاك مسافات التمرير المتداخلة. إذا كان رمز المطوِّر يتجاوز RecyclerView.onNestedScroll(View, int, int, int, int, int) حاليًا، من المحتمل ألا يتم استدعاؤه بعد ذلك، ويجب بدلاً من ذلك تجاوز RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]).
  • يتضمّن RecyclerView الآن سمة نمط تلقائية: recyclerViewStyle، ما يتيح ضبط النمط التلقائي في المظهر.
  • لم تعُد واجهة برمجة التطبيقات لإجراءات تسهيل الاستخدام في ViewCompat تتسبّب في تعطُّل ItemDelegate في RecyclerView.
  • يمكن إلغاء LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) لتخصيص مقدار مساحة التنسيق الإضافية التي يجب إضافتها إلى أيّ من جانبي RecyclerView المرتبط. (aosp/931259)
  • تمت إضافة تحميل زائد جديد للدالة smoothScrollBy: RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration)، ما يتيح لك تحديد مدة بالملي ثانية للمدة التي يجب أن تستغرقها الحركة. (aosp/952807)

الإصدار 1.1.0-rc01

‫23 تشرين الأول (أكتوبر) 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح الخطأ "التطبيق لا يستجيب" عند تجاهل RecyclerViewAccessibilityDelegate.ItemDelegate (aosp/1138057، aosp/1133434)

الإصدار 1.1.0-beta05

‫9 أكتوبر 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-beta05. يتضمّن الإصدار 1.1.0-beta05 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • استنادًا إلى aosp/1106715 وaosp/1103182، ستعرض الآن الفئتان LinearSnapHelper وPagerSnapHelper طريقة العرض التي تقع في منتصف حدود RecyclerView، باستثناء المساحة المتروكة، بغض النظر عن قيمة clipToPadding. (aosp/1130728)

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تتسبب في إنشاء RecyclerView لعُقد تسهيل الاستخدام المكررة لعناصر RecyclerView الفرعية. (aosp/1130618)
  • تم إصلاح مشكلة عدم عمل "التسلسلات الهرمية للوصول الافتراضي" في RecyclerViews.
  • تم إصلاح مشكلة عدم استخدام ItemDelegates المخصّصة.

الإصدار 1.1.0-beta04

‫5 أيلول (سبتمبر) 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-beta04. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

إصلاح الأخطاء

  • تأخذ السمتان PagerSnapHelper وLinearSnapHelper الآن في الاعتبار مساحة RecyclerView المتروكة بغض النظر عن قيمة clipToPadding (b/139452422 وb/139012032 وaosp/1103182 وaosp/1106715).
  • تم إصلاح الخطأ الذي كان يؤدي إلى عدم السماح لـ RecyclerView باعتراض اللمس عندما يؤدي التمرير المسبق المتداخل إلى تمرير NestedScrollingParent (b/138668210، aosp/1105373). ويفيد ذلك المكتبات، مثل ViewPager2.
  • ينتقل RecyclerView الآن باستمرار إلى SCROLL_STATE_DRAGGING قبل إرسال عمليات التمرير المسبق المضمّنة (aosp/1105373)
  • لم يعُد يتم تنفيذ التمرير المسبق المتداخل قبل أن يتجاوز الإيماءة مسافة التمرير (b/139530818، aosp/1105373)
  • يتم ضبط وسيطتَي dx وdy المُرسَلتَين إلى عمليات التمرير المُسبَق المتداخلة على صفر عندما يتعذّر على RecyclerView التمرير في هذا الاتجاه (aosp/1105373).

الإصدار 1.1.0-beta03

‫15 أغسطس 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-beta03. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

تغييرات واجهة برمجة التطبيقات

  • تُرسِل أداة RecyclerView الآن مسافات التمرير من خلال View.onScrollChanged(int l, int t, int oldl, int oldt)، ما يتيح إعلام خدمات تسهيل الاستخدام بالتغييرات في التمرير بدقة. (aosp/1007823)

إصلاح الأخطاء

  • تم إصلاح خطأ كبير في تجاوز سعة المخزن المؤقت مرتبط بـ RecyclerView وميزات تسهيل الاستخدام. (aosp/1099577)

الإصدار 1.1.0-beta02

‫7 آب (أغسطس) 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-beta02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • يتضمّن RecyclerView الآن سمة نمط تلقائي: recyclerViewStyle، ما يتيح ضبط النمط التلقائي في المظهر.

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي كان يتسبّب في عدم السماح لـ RecyclerView باعتراض اللمس عند التمرير ما يؤدي إلى تمرير NestedScrollingParent. (b/131115697 وaosp/1055911)

الإصدار 1.1.0-beta01

2 تموز (يوليو) 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-beta01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • تشارك RecyclerView الآن في التمرير المتداخل عند بدء التمرير من خلال أحداث تسهيل الاستخدام. (aosp/973584)

الإصدار 1.1.0-alpha06

‫5 يونيو 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-alpha06 وandroidx.recyclerview:recyclerview-selection:1.1.0-alpha06. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • تمت إضافة تحميل زائد جديد للدالة smoothScrollBy: RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration)، ما يتيح لك تحديد مدة بالملي ثانية للمدة التي يجب أن تستغرقها الحركة. (aosp/952807)

تغييرات واجهة برمجة التطبيقات

  • لم يعُد التصنيفان GridLayoutManager وStaggeredGridLayoutManager يصنّفان تلقائيًا العناصر ذات العرض الكامل كعناوين لأغراض تسهيل الاستخدام (aosp/969703)
  • الحفاظ على ترتيب الاختيار (حسب وقت الإنشاء) في recyclerview-selection (aosp/937279)

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي كان يتسبّب في تحرّك RecyclerView بسرعات غير صحيحة أثناء التمرير المتداخل. (aosp/961642)
  • تمت إضافة تحسينات على ثبات recyclerview-selection (aosp/960213 وaosp/926296)

الإصدار 1.1.0-alpha05

7 أيار (مايو) 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-alpha05 وandroidx.recyclerview:recyclerview-selection:1.1.0-alpha05. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • يمكن إلغاء LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) لتخصيص مقدار مساحة التنسيق الإضافية التي يجب إضافتها إلى أيّ من جانبي RecyclerView المرتبط. (aosp/931259)

تغييرات واجهة برمجة التطبيقات

  • إضافة واجهة برمجة تطبيقات لاسترداد DividerItemDecoration قابلة للرسم (aosp/937282)
  • إيقاف LinearLayout.getExtraLayoutSpace(RecyclerVew.State) نهائيًا واستخدام آلية جديدة تتيح توفير مساحة إضافية مخصّصة للتنسيق على كلا الجانبين الطريقة الجديدة هي LinearLayout.calculateExtraLayoutSpace(RecyclerView.state, int[]) (aosp/931259)

إصلاح الأخطاء

  • تنظيف عملية اختيار الإيماءات (aosp/940781)
  • الحفاظ على ترتيب التحديد (حسب وقت الإنشاء) (b/128455535)

الإصدار 1.1.0-alpha04

‫3 أبريل 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-alpha04. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

إصلاح الأخطاء

  • لم يكن بإمكان OnItemTouchListener في RecyclerView اعتراض ACTION_UP في السابق، ما كان يمنع OnItemTouchListener من حظر الرمز الآخر من الاستجابة إلى ACTION_UP. تم حلّ هذه المشكلة الآن: (aosp/916137)

الإصدار 1.1.0-alpha03

‫13 مارس 2019

تم طرح androidx.recyclerview:recyclerview:1.1.0-alpha03. يمكنك الاطّلاع على القائمة الكاملة للتعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • GridLayoutManager: الموافقة على تقدير أبعاد شريط التمرير GridLayoutManager بدقة أعلى (aosp/838836):
    • يستخدم معلومات النطاق لتقدير أبعاد شريط التمرير لعنصر GridLayoutManager.
    • للتفعيل، استخدِم الدالة GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) مع تمرير القيمة true.
    • لمزيد من المعلومات، يُرجى الاطّلاع على المستندات حول GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean).

إصلاح الأخطاء

  • تسهيل الاستخدام: حدث خطأ عند إعادة استخدام ViewHolder ثم إعادة ربطه، ولم يتم ربط ItemDelegate المرتبط بـ RecyclerViewAccessibilityDelegate في RecyclerView بـ itemView في ViewHolder، ما أدّى إلى حدوث مشكلة في تسهيل الاستخدام. تم إصلاح هذه المشكلة الآن (aosp/917740).

الإصدار 1.1.0-alpha02

‫30 يناير 2019

تم طرح androidx.recyclerview:recyclerview 1.1.0-alpha02.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف RecyclerView.setLayoutFrozen(boolean) وRecyclerView.isLayoutFrozen() نهائيًا لصالح RecyclerView.suppressLayout(boolean) وRecyclerView.isLayoutSuppressed(). (aosp/839414)
  • تم إيقاف RecyclerView.setLayoutTransition(LayoutTransition) نهائيًا، وسيتم عرض الخطأ IllegalArgumentException عند استدعائه بقيمة غير فارغة. (aosp/839414)

إصلاح الأخطاء

  • إصلاح الخطأ في RV حيث لا يتم إيقاف SmoothScroller أبدًا (aosp/843741)
  • تم إصلاح الخطأ الذي قد لا يتم فيه استدعاء SCROLL_STATE_IDLE في نهاية حركة التمرير. (aosp/812576)

الإصدار 1.1.0-alpha01

‫3 كانون الأول (ديسمبر) 2018

تم طرح androidx.recyclerview 1.1.0-alpha01 وandroidx.recyclerview-selection 1.1.0-alpha01.

‫androidx.recyclerview 1.1.0-alpha01

تغييرات واجهة برمجة التطبيقات

  • aosp/723649: تنفّذ أداة RecyclerView الآن واجهة NestedScrollingChild3، ما يتيح إعلامها عندما تتوقف جميع عناصرها الرئيسية المتداخلة التي يمكن التمرير فيها عن استهلاك مسافات التمرير المتداخلة. إذا كان رمز المطوِّر يتجاوز RecyclerView.onNestedScroll(View, int, int, int, int, int) حاليًا، من المحتمل ألا يتم استدعاؤه بعد ذلك، ويجب بدلاً من ذلك تجاوز RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]).

إصلاح الأخطاء

  • تم إصلاح عُطل كان يحدث عند استخدام TransitionManager لتصغير/توسيع عنصر في RecyclerView (b/37129527).
  • تم إصلاح الخطأ الذي كان يؤدي إلى عدم اتساق سلوك RecyclerView.OnItemTouchListener مع سلوك onInterceptTouchEvent وonTouchEvent في نظام العرض (aosp/721235)
  • تم إصلاح بعض الأخطاء في حالات الحواف المتعلّقة بالتمرير السلس (aosp/729718 وaosp/747168 وaosp/812576).
  • تم إصلاح استراتيجية الالتقاط في PagerSnapHelper للتعامل مع طرق العرض غير النموذجية للأطفال (aosp/795752)

androidx.recyclerview-selection 1.1.0-alpha01

إصلاح الأخطاء

  • تم إصلاح الخطأ ConcurrentModificationException الذي كان يظهر عند تغيير مجموعة البيانات مع إزالة التحديد.

الإصدار 1.1.0 من مكتبة RecyclerView-Selection

الإصدار 1.1.0 من مكتبة RecyclerView-Selection

‫27 يناير 2021

تم طرح androidx.recyclerview:recyclerview-selection:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.

التغييرات الرئيسية منذ الإصدار 1.0.0

  • تحسينات عديدة على ثبات النظام
  • تم إيقاف الطريقتَين withGestureTooltypes وwithPointerTooltypes نهائيًا في SelectionTracker.Builder. ستتم إزالة هذه الطرق في إصدار مستقبلي.

الإصدار 1.1.0-rc03 من RecyclerView-Selection

1 تشرين الأول (أكتوبر) 2020

تم طرح androidx.recyclerview:recyclerview-selection:1.1.0-rc03. يتضمّن الإصدار 1.1.0-rc03 هذه التعديلات.

إصلاح الأخطاء

نشكر "ستيفان كيسلر" على اختبار الإصلاحات وتقديم الملاحظات.

  • تم إصلاح المشكلة التي كانت تؤدي إلى استدعاء OnClickListeners لعرض العناصر الفرعية بشكل غير متوقّع أثناء التحديد النشط.
  • معالج الماوس (اختيار النطاق) > التعامل مع عمليات التمرير غير المتوقّعة بشكل سليم (b/167821507)

الإصدار 1.1.0-rc02 من RecyclerView-Selection

‫2 سبتمبر 2020

تم طرح androidx.recyclerview:recyclerview-selection:1.1.0-rc02. يتضمّن الإصدار 1.1.0-rc02 هذه التعديلات.

أهم الميزات

  • تمت معالجة العديد من المشاكل التي ظهرت في الإصدار 1.0 والمتعلّقة بمعالجة الإدخال.
  • تم تعديل المكتبة لتتوافق مع onRequestDisallowInterceptTouchEvent، ما يتيح لها العمل بشكل جيد مع ItemTouchHelper (ما عليك سوى التمرير سريعًا لإغلاقها).

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تتسبّب في تفسير مكتبة الاختيار لأحداث GestureDetector بشكل خاطئ، ما يؤدي إلى فقدان النقرات أثناء التحديد النشط (b/165030422)
  • تم إصلاح المشكلة المتمثّلة في عدم تعديل التحديد لإظهار العناصر التي تمت إزالتها من المحوّل. (b/138932671)
  • تم إصلاح المشكلة التي كانت تؤدي إلى إطلاق عناصر RecyclerView لأحداث onClick أثناء تفعيل SelectionTracker (b/161162268)
  • التعامل مع onRequestDisallowInterceptTouchEvent بشكل صحيح
  • تم إصلاح المشكلة المتمثّلة في ظهور ”Cannot call this method in a scroll callback” أثناء التمرير بالماوس على الإصدار Q
  • تم تعديل المستندات (خاصةً في StableIdKeyProvider) لتوضيح متطلبات مثيل RecyclerView

الإصدار 1.1.0-rc01 من Recyclerview-Selection

5 شباط (فبراير) 2020

تم طرح androidx.recyclerview:recyclerview-selection:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة صعوبة التمرير في RecyclerView باستخدام إيماءة تحديد إذا كان يتفاعل مع AppBarLayout قابلة للتمرير (aosp/1193934).

الإصدار 1.1.0-beta01 من RecyclerView-Selection

4 كانون الأول (ديسمبر) 2019

تم طرح androidx.recyclerview:recyclerview-selection:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.

تحسينات عامة على الثبات تتعلّق بعمليات التحقّق الدفاعية وإدارة الحالة الداخلية

إصلاح الأخطاء

  • تحسين إدارة حالة المكتبة وتفسير أحداث CANCEL، ما يؤدي إلى تحسينات في الثبات

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة مَعلمة نوع مفتاح التحديد إلى الفئات والطُرق التي لم تكن متوفّرة فيها.
  • الطُرق المتوقّف عن استخدامها نهائيًا:
    • SelectionTracker.Builder#withPointerTooltype
    • SelectionTracker.Builder#withGestureTooltype
    • كانت هذه الطرق متوفّرة بهدف السماح للمطوّرين بربط سلوكيات المؤشر أو الإيماءات بأنواع أدوات أخرى غير الأنواع التلقائية*. كانت النية حسنة، ولكن عند استخدامها بشكل أكبر، اتّضح أنّ توقّعات المستخدمين بشأن سلوك الإدخال تختلف كثيرًا حسب نوع الأداة. بالإضافة إلى ذلك، تعتبر الأقلام الإلكترونية "غير النشطة" من نوع FINGER وفقًا لنظام الإدخال في Android.
    • أنواع الأدوات التلقائية هي FINGER للإيماءات وMOUSE للمؤشر.