تساعدك مكتبة Paging في تحميل صفحات البيانات وعرضها من مجموعة بيانات أكبر
من مساحة التخزين المحلية أو عبر شبكة. يتيح هذا النهج لتطبيقك استخدام
كل من معدل نقل البيانات في الشبكة وموارد النظام بكفاءة أكبر. تم تصميم مكوّنات مكتبة Paging لكي تتوافق مع بنية تطبيقات Android المُقترَحة، وأن تتكامل بسلاسة مع مكوّنات Jetpack الأخرى، وأن توفّر دعمًا من الدرجة الأولى لـ Kotlin.
مزايا استخدام مكتبة الفهرسة
تتضمّن مكتبة "التنقّل في الصفحة" الميزات التالية:
ذاكرة التخزين المؤقت في الذاكرة لبياناتك المفصّلة يساعد ذلك في ضمان استخدام تطبيقك
لموارد النظام بكفاءة أثناء العمل مع البيانات المفصّلة.
ميزة "إزالة تكرار الطلبات" المضمّنة، والتي تساعد في ضمان استخدام تطبيقك لسعة نقل بيانات الشبكة
وموارد النظام بكفاءة
محدّدات ومقاييس
RecyclerView
قابلة للضبط تطلب البيانات تلقائيًا عندما ينتقل المستخدم إلى نهاية
البيانات المحمَّلة.
إتاحة ميزات ممتازة لعمليات التشغيل المتعدّد المتزامن ومسارات Kotlin، بالإضافة إلى
LiveData وRxJava
إتاحة معالجة الأخطاء بشكل مضمّن، بما في ذلك إمكانات إعادة التحميل وإعادة المحاولة
تقديم تعليقات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة
أو كانت لديك أفكار لتحسين هذه المكتبة. تحقَّق من
المشاكل الحالية
لهذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى
مشكلة حالية من خلال النقر على زرّ النجمة.
تعمل مكوّنات مكتبة Paging في ثلاث
طبقات من تطبيقك:
طبقة المستودع
طبقة ViewModel
طبقة واجهة المستخدم
الشكل 1. مثال على كيفية ملاءمة مكتبة Paging لبنية
تطبيقك
يوضِّح هذا القسم مكوّنات مكتبة الفهرسة التي تعمل في كل طبقة
وكيفية عملها معًا لتحميل البيانات المفصّلة وعرضها.
طبقة المستودع
المكوّن الأساسي لـ "مكتبة الفهرسة" في طبقة المستودع هو
PagingSource. يحدِّد كل عنصر
PagingSource مصدر البيانات وكيفية استرداد البيانات من
هذا المصدر. يمكن لعنصر PagingSource تحميل البيانات من أي مصدر واحد،
بما في ذلك مصادر الشبكة وقواعد البيانات المحلية.
يمكنك أيضًا استخدام المكوّن التالي من مكتبة Paging:
RemoteMediator. يعالج عنصر
RemoteMediator تقسيم الصفحة من مصدر بيانات متعدّد الطبقات، مثل
مصدر بيانات على الشبكة مع ذاكرة تخزين مؤقت لقاعدة بيانات محلية.
طبقة ViewModel
يقدّم المكوّن Pager
واجهة برمجة تطبيقات عامة لإنشاء نُسخ من PagingData يتم عرضها في
البثّات التفاعلية، استنادًا إلى عنصر PagingSource وأحد عناصر الإعداد
PagingConfig.
المكوّن الذي يربط طبقة ViewModel بواجهة المستخدم هو
PagingData. PagingData
العنصر هو حاوية لنبذة عن البيانات المفصّلة. يُجري طلب بحث عن عنصر
PagingSource ويحفظ النتيجة.
طبقة واجهة المستخدم
عنصر مكتبة الفهرسة الأساسية في طبقة واجهة المستخدم هو
PagingDataAdapter، وهو محوِّل
RecyclerView
يعالج البيانات المفصَّلة.
بدلاً من ذلك، يمكنك استخدام العنصر المُرفَق
AsyncPagingDataDiffer
لإنشاء محوِّل مخصّص.
مصادر إضافية
للاطّلاع على مزيد من المعلومات عن مكتبة Paging، اطّلِع على المراجع الإضافية التالية:
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["Paging library overview\nPart of [Android Jetpack](/jetpack).\n\nThe Paging library helps you load and display pages of data from a larger\ndataset from local storage or over a network. This approach lets your app use\nboth network bandwidth and system resources more efficiently. The components of\nthe Paging library are designed to fit into the recommended [Android app\narchitecture](/jetpack/docs/guide), integrate cleanly with other\n[Jetpack](/jetpack) components, and provide first-class Kotlin support.\n\nBenefits of using the Paging library\n\nThe Paging library includes the following features:\n\n- In-memory caching for your paged data. This helps ensure that your app uses system resources efficiently while working with paged data.\n- Built-in request deduplication, which helps ensure that your app uses network bandwidth and system resources efficiently.\n- Configurable [`RecyclerView`](/reference/kotlin/androidx/recyclerview/widget/RecyclerView) adapters that automatically request data as the user scrolls toward the end of the loaded data.\n- First-class support for Kotlin coroutines and flows as well as [`LiveData`](/reference/kotlin/androidx/lifecycle/LiveData) and RxJava.\n- Built-in support for error handling, including refresh and retry capabilities.\n\nProvide feedback\n\nYour feedback helps make Jetpack better. Let us know if you discover new issues\nor have ideas for improving this library. Check the\n[existing issues](https://issuetracker.google.com/issues?q=componentid:413106%20status:open)\nfor this library before you create a new one. You can add your vote to an\nexisting issue by clicking the star button.\n\n[Create a new issue](https://issuetracker.google.com/issues/new?component=413106&template=1096385)\n\nSee the [Issue Tracker\ndocumentation](https://developers.google.com/issue-tracker) for more\ninformation about submitting feedback.\n\nSetup\n\nTo import Paging components into your Android app, add the following\ndependencies to your app's `build.gradle` file: \n\nGroovy \n\n```groovy\ndependencies {\n def paging_version = \"3.3.6\"\n\n implementation \"androidx.paging:paging-runtime:$paging_version\"\n\n // alternatively - without Android dependencies for tests\n testImplementation \"androidx.paging:paging-common:$paging_version\"\n\n // optional - RxJava2 support\n implementation \"androidx.paging:paging-rxjava2:$paging_version\"\n\n // optional - RxJava3 support\n implementation \"androidx.paging:paging-rxjava3:$paging_version\"\n\n // optional - Guava ListenableFuture support\n implementation \"androidx.paging:paging-guava:$paging_version\"\n\n // optional - Jetpack Compose integration\n implementation \"androidx.paging:paging-compose:3.4.0-alpha03\"\n}\n```\n\nKotlin \n\n```kotlin\ndependencies {\n val paging_version = \"3.3.6\"\n\n implementation(\"androidx.paging:paging-runtime:$paging_version\")\n\n // alternatively - without Android dependencies for tests\n testImplementation(\"androidx.paging:paging-common:$paging_version\")\n\n // optional - RxJava2 support\n implementation(\"androidx.paging:paging-rxjava2:$paging_version\")\n\n // optional - RxJava3 support\n implementation(\"androidx.paging:paging-rxjava3:$paging_version\")\n\n // optional - Guava ListenableFuture support\n implementation(\"androidx.paging:paging-guava:$paging_version\")\n\n // optional - Jetpack Compose integration\n implementation(\"androidx.paging:paging-compose:3.4.0-alpha03\")\n}\n```\n\nLibrary architecture\n\nThe Paging library's components operate in three\nlayers of your app:\n\n- The repository layer\n- The `ViewModel` layer\n- The UI layer\n\n**Figure 1.** An example of how the Paging library fits into your app architecture.\n\nThis section describes the Paging library components that operate at each layer\nand how they work together to load and display paged data.\n\nRepository layer\n\nThe primary Paging library component in the repository layer is\n[`PagingSource`](/reference/kotlin/androidx/paging/PagingSource). Each\n`PagingSource` object defines a source of data and how to retrieve data from\nthat source. A `PagingSource` object can load data from any single source,\nincluding network sources and local databases.\n\nAnother Paging library component that you might use is\n[`RemoteMediator`](/reference/kotlin/androidx/paging/RemoteMediator). A\n`RemoteMediator` object handles paging from a layered data source, such as a\nnetwork data source with a local database cache.\n\nViewModel layer\n\nThe [`Pager`](/reference/kotlin/androidx/paging/Pager) component provides a\npublic API for constructing instances of `PagingData` that are exposed in\nreactive streams, based on a `PagingSource` object and a\n[`PagingConfig`](/reference/kotlin/androidx/paging/PagingConfig) configuration\nobject.\n\nThe component that connects the `ViewModel` layer to the UI is\n[`PagingData`](/reference/kotlin/androidx/paging/PagingData). A `PagingData`\nobject is a container for a snapshot of paginated data. It queries a\n[`PagingSource`](/reference/kotlin/androidx/paging/PagingSource) object and\nstores the result.\n\nUI layer\n\nThe primary Paging library component in the UI layer is\n[`PagingDataAdapter`](/reference/kotlin/androidx/paging/PagingDataAdapter), a\n[`RecyclerView`](/reference/kotlin/androidx/recyclerview/widget/RecyclerView)\nadapter that handles paginated data.\n\nAlternatively, you can use the included\n[`AsyncPagingDataDiffer`](/reference/kotlin/androidx/paging/AsyncPagingDataDiffer)\ncomponent to build your own custom adapter.\n| **Note:** If your app uses [Compose](/jetpack/compose) for its UI, use the [`androidx.paging:paging-compose`](/reference/kotlin/androidx/paging/compose/package-summary) artifact to integrate Paging with your UI layer instead. To learn more, see the API documentation for [`collectAsLazyPagingItems()`](/reference/kotlin/androidx/paging/compose/package-summary#collectaslazypagingitems).\n\nAdditional resources\n\nTo learn more about the Paging library, see the following additional resources:\n\nCodelabs\n\n- [Android Paging Basics codelab](https://developer.android.com/codelabs/android-paging-basics)\n- [Android Paging Advanced codelab](https://codelabs.developers.google.com/codelabs/android-paging)\n\nRecommended for you\n\n- Note: link text is displayed when JavaScript is off\n- [Load and display paged data](/topic/libraries/architecture/paging/v3-paged-data)\n- [Migrate to Paging 3](/topic/libraries/architecture/paging/v3-migration)\n- [Page from network and database](/topic/libraries/architecture/paging/v3-network-db)"]]