RecyclerView
هو مكوِّن من مكوِّن "العرض" يسهّل العرض بكفاءة.
لمجموعات كبيرة من البيانات. فبدلاً من إنشاء طرق عرض لكل عنصر في مجموعة البيانات،
يعمل RecyclerView
على تحسين أداء تطبيقك من خلال الاحتفاظ بمجموعة صغيرة من
طرق العرض وإعادة التدوير من خلالها أثناء التمرير عبر هذه العناصر.
في ميزة "الإنشاء"، يمكنك استخدام القوائم غير الكاملة لتحقيق النتيجة نفسها. هذه الصفحة
كيفية نقل بيانات تنفيذ RecyclerView
لاستخدام القوائم الكسولة
في Compose.
خطوات نقل البيانات
لنقل عملية تنفيذ RecyclerView
إلى Compose، اتّبِع الخطوات التالية:
أزِل العنصر
RecyclerView
من التسلسل الهرمي لواجهة المستخدم أو علِّق عليه، وأضِفComposeView
ليحلّ محلّه إذا لم يكن متوفّرًا في التسلسل الهرمي بعد. هذه هي حاوية القائمة البطيئة التي ستضيفها:<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <!-- <androidx.recyclerview.widget.RecyclerView--> <!-- android:id="@+id/recycler_view"--> <!-- android:layout_width="match_parent"--> <!-- android:layout_height="match_parent />"--> <androidx.compose.ui.platform.ComposeView android:id="@+id/compose_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
حدِّد نوع العنصر القابل للتجميع في القائمة البطيئة الذي تحتاجه استنادًا إلى مدير تنسيق
RecyclerView
(راجِع الجدول أدناه). سيكون العنصر القابل للتجميع الذي تختاره هو العنصر القابل للتجميع من المستوى الأعلى فيComposeView
الذي أضفته في الخطوة السابقة.LayoutManager
قابلة للتعديل
LinearLayoutManager
LazyColumn
أوLazyRow
GridLayoutManager
LazyVerticalGrid
أوLazyHorizontalGrid
StaggeredGridLayoutManager
LazyVerticalStaggeredGrid
أوLazyHorizontalStaggeredGrid
// recyclerView.layoutManager = LinearLayoutManager(context) composeView.setContent { LazyColumn(Modifier.fillMaxSize()) { // We use a LazyColumn since the layout manager of the RecyclerView is a vertical LinearLayoutManager } }
أنشئ مادة عرض مقابلة لكل نوع عرض في تنفيذ "
RecyclerView.Adapter
". يتم عادةً ربط كل نوع عرض بأحد فئاتViewHolder
الفرعية، ولكن قد لا يكون هذا هو الحال دائمًا. سيتم استخدام هذه العناصر القابلة للتجميع لتمثيل واجهة المستخدم لأنواع مختلفة من العناصر في قائمتك:@Composable fun ListItem(data: MyData, modifier: Modifier = Modifier) { Row(modifier.fillMaxWidth()) { Text(text = data.name) // … other composables required for displaying `data` } }
المنطق في
onCreateViewHolder()
لـRecyclerView.Adapter
سيتم استبدال الطرقonBindViewHolder()
بهذه العناصر القابلة للإنشاء تذكر أنك تزودهم بها. في Compose، لا يوجد فصل بين إنشاء عنصر قابل للتركيب لعنصر وربط البيانات به، فهذه المفاهيم مدمجة.في الخانة
content
من القائمة الكسولة (مَعلمة lambda اللاحقة)، استخدام الدالةitems()
(أو أي حمل زائد مكافئ) للتكرار التحسيني في البيانات لقائمتك. في دالةitemContent
lambda، استخدِم العنصر القابل للتجميع المناسب لبياناتك:val data = listOf<MyData>(/* ... */) composeView.setContent { LazyColumn(Modifier.fillMaxSize()) { items(data) { ListItem(it) } } }
حالات الاستخدام الشائعة
زينة السلع
تتضمن RecyclerView
مفهوم ItemDecoration
، الذي يمكنك استخدامه لإضافة
رسم خاص للعناصر في القائمة. على سبيل المثال، يمكنك إضافة
ItemDecoration
لإضافة مُقسّمات بين العناصر:
val itemDecoration = DividerItemDecoration(recyclerView.context, LinearLayoutManager.VERTICAL) recyclerView.addItemDecoration(itemDecoration)
ليس لعملية الإنشاء مفهوم مكافئ لتصميمات العناصر. بدلاً من ذلك،
يمكنك إضافة أي زينة لواجهة المستخدم في القائمة مباشرةً في التركيب. على سبيل المثال:
لإضافة مُقسّمات إلى القائمة، يمكنك استخدام العنصر Divider
القابل للإنشاء بعد كل
item:
LazyColumn(Modifier.fillMaxSize()) { itemsIndexed(data) { index, d -> ListItem(d) if (index != data.size - 1) { HorizontalDivider() } } }
الصور المتحركة للعناصر
يمكن ضبط ItemAnimator
على RecyclerView
لإضافة تأثيرات متحركة إلى شكل
العناصر عند إجراء تغييرات على المكوّن الإضافي. يستخدم RecyclerView
تلقائيًا
DefaultItemAnimator
الذي يقدّم صورًا متحركة أساسية عند إزالة الأحداث وإضافتها ونقلها.
تستخدم القوائم الكسولة مفهومًا مشابهًا من خلال مفتاح التعديل animateItemPlacement
.
راجِع الصور المتحركة للعناصر لمعرفة المزيد من المعلومات.
مصادر إضافية
لمزيد من المعلومات حول نقل RecyclerView
إلى Compose، يُرجى الاطّلاع على
المراجع التالية:
- القوائم والشبكات: وثائق حول كيفية تنفيذ القوائم والشبكات في إنشاء.
- التوافق مع Jetpack Compose: استخدام Compose في RecyclerView:
مشاركة مدوّنة حول استخدام Compose بكفاءة في
RecyclerView
أفلام مُقترَحة لك
- ملاحظة: يظهر نص الرابط عند إيقاف JavaScript
- القوائم والشبكات
- نقل
CoordinatorLayout
إلى ميزة "إنشاء" - اعتبارات أخرى