با بارگیری و صفحهبندی تنبل، میتوانید با بارگیری و نمایش تدریجی دادهها، از فهرستهای بزرگی از آیتمها - از جمله یک لیست بینهایت - در برنامه خود پشتیبانی کنید. این تکنیک شما را قادر می سازد زمان بارگذاری اولیه را کاهش دهید و استفاده از حافظه را بهینه کنید و عملکرد را افزایش دهید.
سازگاری نسخه
این پیاده سازی مستلزم آن است که minSDK پروژه شما روی سطح API 21 یا بالاتر تنظیم شود.
وابستگی ها
نمایش محتوای صفحه شده
با کتابخانه Paging، می توانید صفحات داده را از یک مجموعه داده بزرگتر که از ذخیره سازی محلی یا از طریق شبکه به دست آمده است بارگیری و نمایش دهید. از کد زیر برای نمایش یک لیست صفحه بندی شده استفاده کنید که نوار پیشرفت را نشان می دهد تا به کاربر نشان دهد داده های بیشتری در حال واکشی است:
@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()
یک مکان نگهدار بصری (یک اسپینر در حال بارگذاری) فراهم می کند در حالی که داده های پیام واقعی در حال واکشی هستند و تجربه کاربر را بهبود می بخشد.
نتایج
ویدئوی زیر رفتار حاصل از یک لیست بزرگ را نشان می دهد که داده ها را هنگام پیمایش کاربر واکشی می کند.
مجموعه هایی که حاوی این راهنما هستند
این راهنما بخشی از مجموعههای راهنمای Quick Guide است که اهداف توسعه Android گستردهتری را پوشش میدهد:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=fa)
نمایش یک لیست یا شبکه
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=fa)
نمایش اجزای تعاملی
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=fa)