نظرة عامة على مكتبة Paging جزء من Android Jetpack
تساعدك مكتبة Paging في تحميل وعرض صفحات البيانات من مجموعة بيانات أكبر من مساحة التخزين المحلية أو عبر شبكة. يتيح هذا الأسلوب لتطبيقك استخدام كل من النطاق الترددي للشبكة وموارد النظام بكفاءة أكبر. تم تصميم مكوّنات مكتبة Paging لتتلاءم مع بنية تطبيق Android المقترَحة، وتتكامل بسلاسة مع مكوّنات Jetpack الأخرى، وتوفّر دعمًا من الدرجة الأولى للغة Kotlin.
مزايا استخدام مكتبة Paging
تتضمّن مكتبة Paging الميزات التالية:
- التخزين المؤقت في الذاكرة للبيانات المقسّمة إلى صفحات يساعد ذلك في ضمان استخدام تطبيقك لموارد النظام بكفاءة أثناء العمل مع البيانات المقسّمة إلى صفحات.
- إزالة الطلبات المكرّرة المضمّنة، ما يساعد في ضمان استخدام تطبيقك للنطاق الترددي للشبكة وموارد النظام بكفاءة
- دعم من الدرجة الأولى لتدفقات وأنماط "كوروتين" في Kotlin
- دعم مدمج لمعالجة الأخطاء، بما في ذلك إمكانات إعادة التحميل وإعادة المحاولة
الإعداد
لاستيراد مكوّنات Paging إلى تطبيق Android، أضِف التبعيات التالية إلى ملف build.gradle في تطبيقك:
Kotlin
dependencies { val paging_version = "3.4.2" implementation("androidx.paging:paging-common:$paging_version") // Jetpack Compose integration implementation("androidx.paging:paging-compose:$paging_version") }
أنيق
dependencies { def paging_version = "3.4.2" implementation "androidx.paging:paging-common:$paging_version" // Jetpack Compose integration implementation "androidx.paging:paging-compose:$paging_version" }
بنية المكتبة
تعمل مكوّنات مكتبة Paging في ثلاث طبقات من تطبيقك:
- طبقة المستودع
- طبقة
ViewModel - طبقة واجهة المستخدم
يوضّح هذا القسم مكوّنات مكتبة Paging التي تعمل في كل طبقة وكيفية عملها معًا لتحميل البيانات المقسّمة إلى صفحات وعرضها.
طبقة المستودع
مكوّن مكتبة Paging الأساسي في طبقة المستودع هو
PagingSource. يحدّد كل عنصر PagingSource مصدرًا للبيانات وكيفية استرداد البيانات من ذلك المصدر. يمكن لكائن PagingSource تحميل البيانات من أي مصدر واحد،
بما في ذلك مصادر الشبكة وقواعد البيانات المحلية.
من مكوّنات مكتبة Paging الأخرى التي يمكنك استخدامها
RemoteMediator. يتولّى عنصر
RemoteMediator معالجة التنقّل بين الصفحات من مصدر بيانات متعدد الطبقات، مثل
مصدر بيانات الشبكة مع ذاكرة تخزين مؤقت لقاعدة بيانات محلية.
طبقة ViewModel
يوفّر مكوّن Pager واجهة برمجة تطبيقات عامة لإنشاء نُسخ من PagingData يتم عرضها في سلاسل البيانات التفاعلية، استنادًا إلى عنصر PagingSource وعنصر ضبط PagingConfig.
المكوّن الذي يربط طبقة ViewModel بواجهة المستخدم هو PagingData. عنصر PagingData هو حاوية للقطة من البيانات المقسّمة على صفحات. يستعلم عن عنصر PagingSource ويخزّن النتيجة.
طبقة واجهة المستخدم
واجهة برمجة التطبيقات الأساسية لواجهة مستخدم Paging هي collectAsLazyPagingItems(). وتعرض العناصر المقسّمة إلى صفحات كقائمة بيانات يمكن استخدامها بسهولة من خلال مكوّنات التنسيق الكسول في Compose، مثل LazyColumn وLazyRow.
أضِف مكتبة androidx.paging:paging-compose لاستخدام واجهات برمجة التطبيقات المتوافقة مع Compose
التي تتيح لواجهة المستخدم التفاعل تلقائيًا مع عمليات تحميل البيانات والتحديثات والأخطاء بدون
الحاجة إلى محوّلات أو منطق مقارنة. استخدِم دالة الإضافة collectAsLazyPagingItems() في Flow<PagingData> لتمرير LazyPagingItems الذي تم عرضه إلى items() في LazyColumn.
@Composable fun MessageList(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() } } } }
لمزيد من المعلومات، يُرجى الاطّلاع على مجموعات البيانات الكبيرة (التنقّل بين الصفحات).
التطبيقات المقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما يكون JavaScript غير مفعَّل
- تحميل البيانات المقسّمة على صفحات وعرضها
- Migrate to Paging 3
- الصفحة من الشبكة وقاعدة البيانات