باستخدام ميزة "التحميل البطيء" وميزة "التنقّل في الصفحات"، يمكنك عرض قوائم كبيرة من العناصر، بما في ذلك قائمة لا نهائية، في تطبيقك من خلال تحميل البيانات وعرضها بشكل تدريجي. تتيح لك هذه الأسلوب تقليل أوقات التحميل الأولية وتحسين استخدام الذاكرة، وبالتالي تحسين الأداء.
توافق الإصدار
يتطلّب هذا التنفيذ ضبط الحد الأدنى من إصدار حزمة SDK لمشروعك على المستوى 21 من واجهة برمجة التطبيقات أو إصدار أحدث.
التبعيات
عرض محتوى مُقسَّم إلى صفحات
باستخدام مكتبة Paging، يمكنك تحميل صفحات البيانات وعرضها من مجموعة بيانات أكبر تم الحصول عليها من مساحة التخزين المحلية أو عبر شبكة. استخدِم الرمز البرمجي التالي لمحاولة عرض قائمة مفصّلة تعرض شريط تقدّم للإشارة إلى المستخدم بأنّه تتم محاولة retrieving more data:
@Composable fun MessageList( modifier: Modifier, pager: Pager<Int, Message> ) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } @Composable fun MessagePlaceholder(modifier: Modifier) { Box( Modifier .fillMaxWidth() .height(48.dp) ) { CircularProgressIndicator() } } @Composable fun MessageRow( modifier: Modifier, message: Message ) { Card(modifier = Modifier.padding(8.dp)) { Column( modifier = Modifier.padding(8.dp), verticalArrangement = Arrangement.Center ) { Text(message.sender) Text(message.text) } } } }
النقاط الرئيسية حول الرمز
LazyColumn
: يتم استخدام هذا المكوّن القابل للتجميع لعرض قائمة كبيرة من العناصر (الرسائل) بكفاءة. ولا يعرض سوى العناصر الظاهرة على الشاشة، ما يوفر الموارد والذاكرة.- يدير عنصر
lazyPagingItems
بفعالية تحميل البيانات المفصّلة ضمنLazyColumn
وعرضها. ويُرسِلLazyPagingItems
إلىitems
في العنصر القابل للتجميعLazyColumn
. -
MessageRow(message: Text)
مسؤول عن عرض عناصر الرسائل الفردية، ومن المحتمل أن يعرض المُرسِل ونص الرسالة ضمن بطاقة. MessagePlaceholder()
يوفّر عنصر نائبًا مرئيًا (مؤشر سريان العمل) أثناء جلب بيانات الرسالة الفعلية، ما يُحسِّن تجربة المستخدم.
النتائج
يعرض الفيديو التالي السلوك الناتج عن قائمة كبيرة تُجلب البيانات أثناء تنقّل المستخدم.
المجموعات التي تتضمّن هذا الدليل
هذا الدليل هو جزء من مجموعات الأدلة السريعة المنظَّمة التي تتناول أهداف تطوير Android الأوسع نطاقًا:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=ar)
عرض قائمة أو شبكة
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=ar)
عرض المكونات التفاعلية
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=ar)