مروری بر کتابخانه صفحهبندی بخشی از جتپک اندروید .
کتابخانه Paging به شما کمک میکند تا صفحات داده را از یک مجموعه داده بزرگتر از حافظه محلی یا از طریق شبکه بارگذاری و نمایش دهید. این رویکرد به برنامه شما اجازه میدهد تا از پهنای باند شبکه و منابع سیستم به طور کارآمدتری استفاده کند. اجزای کتابخانه Paging به گونهای طراحی شدهاند که با معماری پیشنهادی برنامه اندروید مطابقت داشته باشند، به طور کامل با سایر اجزای Jetpack ادغام شوند و پشتیبانی درجه یک Kotlin را ارائه دهند.
مزایای استفاده از کتابخانه Paging
کتابخانه Paging شامل ویژگیهای زیر است:
- ذخیره سازی درون حافظه برای دادههای صفحه بندی شده شما. این به شما اطمینان میدهد که برنامه شما هنگام کار با دادههای صفحه بندی شده، از منابع سیستم به طور کارآمد استفاده میکند.
- قابلیت داخلی حذف درخواستهای تکراری، که به شما کمک میکند تا برنامه شما از پهنای باند شبکه و منابع سیستم به طور کارآمد استفاده کند.
- پشتیبانی درجه یک از کوروتینها و جریانهای کاتلین.
- پشتیبانی داخلی برای مدیریت خطا، از جمله قابلیتهای رفرش و تلاش مجدد.
راهاندازی
برای وارد کردن کامپوننتهای Paging به برنامه اندروید خود، وابستگیهای زیر را به فایل 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 - لایه رابط کاربری
این بخش اجزای کتابخانه صفحهبندی که در هر لایه عمل میکنند و نحوه همکاری آنها برای بارگذاری و نمایش دادههای صفحهبندی شده را شرح میدهد.
لایه مخزن
مؤلفه اصلی کتابخانه Paging در لایه مخزن، PagingSource است. هر شیء PagingSource منبع داده و نحوه بازیابی دادهها از آن منبع را تعریف میکند. یک شیء PagingSource میتواند دادهها را از هر منبع واحدی، از جمله منابع شبکه و پایگاههای داده محلی، بارگیری کند.
یکی دیگر از اجزای کتابخانه Paging که ممکن است از آن استفاده کنید RemoteMediator است. یک شیء RemoteMediator صفحهبندی را از یک منبع داده لایهای، مانند یک منبع داده شبکه با حافظه پنهان پایگاه داده محلی، مدیریت میکند.
لایه ViewModel
کامپوننت Pager یک API عمومی برای ساخت نمونههایی از PagingData که در جریانهای واکنشی نمایش داده میشوند، بر اساس یک شیء PagingSource و یک شیء پیکربندی PagingConfig ارائه میدهد.
کامپوننتی که لایه ViewModel به رابط کاربری متصل میکند، PagingData است. یک شیء PagingData ظرفی برای گرفتن snapshot از دادههای صفحهبندی شده است. این شیء از یک شیء PagingSource پرسوجو میکند و نتیجه را ذخیره میکند.
لایه رابط کاربری
رابط برنامهنویسی کاربردی (API) اصلی صفحهبندی، collectAsLazyPagingItems() است. این رابط، آیتمهای صفحهبندیشده را به عنوان فهرستی از دادهها نمایش میدهد که میتوانند به راحتی توسط کامپوننتهای طرحبندی تنبل Compose، مانند LazyColumn و LazyRow ، مصرف شوند.
کتابخانه androidx.paging:paging-compose اضافه کنید تا از APIهای سازگار با 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() } } } }
برای اطلاعات بیشتر، به مجموعه دادههای بزرگ (صفحهبندی) مراجعه کنید.
{% کلمه به کلمه %}برای شما توصیه میشود
- توجه: متن لینک زمانی نمایش داده میشود که جاوا اسکریپت غیرفعال باشد.
- بارگذاری و نمایش دادههای صفحهبندیشده
- مهاجرت به صفحهبندی ۳
- صفحه از شبکه و پایگاه داده