نمای کلی کتابخانه صفحهبندی بخشی از Android Jetpack.
کتابخانه «صفحهبندی» به شما کمک میکند صفحههای داده را از مجموعه داده بزرگتری از فضای ذخیرهسازی محلی یا ازطریق شبکه بارگیری و نمایش دهید. این رویکرد به برنامهتان امکان میدهد هم از پهنای باند شبکه و هم از منابع سیستم بهطور کارآمدتری استفاده کند. مؤلفههای کتابخانه Paging بهگونهای طراحی شدهاند که با معماری برنامه Android توصیهشده مطابقت داشته باشند، بهطور تمیز با سایر مؤلفههای Jetpack ادغام شوند، و پشتیبانی درجه یک Kotlin را ارائه دهند.
مزایای استفاده از کتابخانه Paging
کتابخانه Paging شامل ویژگیهای زیر است:
- ذخیره موقت درون حافظه برای دادههای صفحهبندیشده شما. این کار کمک میکند مطمئن شوید برنامهتان هنگام کار با دادههای صفحهبندیشده، بهطور کارآمدی از منابع سیستم استفاده میکند.
- حذف درخواستهای تکراری داخلی که کمک میکند مطمئن شوید برنامهتان از پهنای باند شبکه و منابع سیستم بهطور کارآمد استفاده میکند.
- پشتیبانی درجه یک برای روالهای مشترک و جریانهای Kotlin.
- پشتیبانی داخلی برای رسیدگی به خطا، ازجمله قابلیتهای بازآوری و امتحان مجدد.
راهاندازی
برای وارد کردن مؤلفههای «صفحهبندی» به برنامه Android، وابستگیهای زیر را به فایل build.gradle برنامهتان اضافه کنید:
کاتلین
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 - لایه واسط کاربر
این بخش مؤلفههای کتابخانه «صفحهبندی» را که در هر لایه عمل میکنند و نحوه همکاری آنها برای بار کردن و نمایش دادههای صفحهبندیشده را شرح میدهد.
لایه مخزن
مؤلفه اصلی کتابخانه «صفحهبندی» در لایه مخزن
PagingSource است. هر
شیء PagingSource منبع داده و نحوه بازیابی داده از
آن منبع را تعریف میکند. شیء PagingSource میتواند دادهها را از هر منبع تکی،
ازجمله منابع شبکه و پایگاههای داده محلی، بار کند.
یکی دیگر از مؤلفههای کتابخانه «صفحهبندی» که ممکن است استفاده کنید
RemoteMediator است. شیء
RemoteMediator صفحهبندی را از منبع داده لایهای، مثل
منبع داده شبکه با حافظه نهان پایگاه داده محلی، مدیریت میکند.
لایه ViewModel
مؤلفه Pager یک
میانای برنامهسازی کاربردی عمومی برای ساختن نمونههای PagingData ارائه میدهد که در
جاریسازیهای واکنشی، براساس شیء PagingSource و شیء پیکربندی
PagingConfig،
نمایش داده میشوند.
مؤلفهای که لایه ViewModel را به واسط کاربر متصل میکند
PagingData است. شیء PagingData
محفظهای برای عکس آنی دادههای صفحهبندیشده است. این روش شیء
PagingSource را پُرسمان میکند و
نتیجه را ذخیره میکند.
لایه واسط کاربر
میانای برنامهسازی کاربردی اصلی واسط کاربر صفحهبندی 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() } } } }
برای اطلاعات بیشتر، به مجموعه دادههای بزرگ (صفحهبندی) مراجعه کنید.
توصیهشده برای شما
- توجه: وقتی جاوا اسکریپت خاموش باشد، نوشتار پیوند نمایش داده میشود
- بار کردن و نمایش دادن دادههای صفحهبندیشده
- انتقال به Paging 3
- صفحه از شبکه و پایگاه داده