با تنبلی داده ها را با لیست ها و صفحه بندی بارگیری کنید

با بارگیری و صفحه‌بندی تنبل، می‌توانید با بارگیری و نمایش تدریجی داده‌ها، از فهرست‌های بزرگی از آیتم‌ها - از جمله یک لیست بی‌نهایت - در برنامه خود پشتیبانی کنید. این تکنیک شما را قادر می سازد زمان بارگذاری اولیه را کاهش دهید و استفاده از حافظه را بهینه کنید و عملکرد را افزایش دهید.

سازگاری نسخه

این پیاده سازی مستلزم آن است که 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 گسترده‌تری را پوشش می‌دهد:

فهرست‌ها و شبکه‌ها به برنامه شما اجازه می‌دهند مجموعه‌ها را به شکل بصری دلپذیری نمایش دهد که مصرف آن برای کاربران آسان است.
بیاموزید که چگونه توابع ترکیب‌پذیر می‌توانند به شما کمک کنند تا به راحتی اجزای رابط کاربری زیبا را بر اساس سیستم طراحی مواد طراحی کنید.
این سری از ویدیوها APIهای Compose مختلف را معرفی می‌کند و به سرعت به شما نشان می‌دهد که چه چیزی در دسترس است و چگونه از آنها استفاده کنید.

سوال یا بازخورد داشته باشید

به صفحه سوالات متداول ما بروید و درباره راهنماهای سریع بیاموزید یا با ما تماس بگیرید و نظرات خود را با ما در میان بگذارید.