Verileri listeler ve sayfalama ile yavaşça yükleme

Verileri kademeli olarak yükleyerek ve görüntüleyerek uygulamanızda sonsuz listeler de dahil olmak üzere büyük öğe listelerini desteklemek için yavaş yükleme ve sayfalama özelliklerinden yararlanabilirsiniz. Bu teknik, ilk yükleme sürelerini kısaltmanıza ve bellek kullanımını optimize ederek performansı artırmanıza olanak tanır.

Sürüm uyumluluğu

Bu uygulama için projenizin minSDK değerinin API düzeyi 21 veya üstü olarak ayarlanması gerekir.

Bağımlılıklar

Sayfaya bölünmüş içerik görüntüleme

Sayfalama kitaplığıyla, yerel depolama alanından veya ağ üzerinden edinilen daha büyük bir veri kümesinden veri sayfaları yükleyip görüntüleyebilirsiniz. Kullanıcıya daha fazla veri getirildiğini belirtmek için ilerleme çubuğu gösteren sayfalandırılmış bir liste görüntülemek üzere aşağıdaki kodu kullanın:

@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)
            }
        }
    }
}

Kodla ilgili önemli noktalar

  • LazyColumn: Bu bileşen, büyük bir öğe listesini (iletiler) verimli bir şekilde görüntülemek için kullanılır. Yalnızca ekranda görünen öğeleri oluşturur ve böylece kaynak ve bellek tasarrufu sağlar.
  • lazyPagingItems nesnesi, LazyColumn içindeki sayfalı verilerin yüklenmesini ve sunulmasını verimli bir şekilde yönetir. LazyPagingItems değerini LazyColumn bileşeninde items'ye iletir.
  • MessageRow(message: Text), tek tek ileti öğelerini oluşturmaktan sorumludur. Muhtemelen bir kart içinde iletiyi gönderen kişiyi ve ileti metnini gösterir.
  • MessagePlaceholder(), gerçek mesaj verileri getirilirken görsel bir yer tutucu (yükleniyor simgesi) sağlayarak kullanıcı deneyimini iyileştirir.

Sonuçlar

Aşağıdaki videoda, kullanıcı sayfayı kaydırırken büyük bir listenin veri getirmesi sonucunda ortaya çıkan davranış gösterilmektedir.

Bu kılavuzu içeren koleksiyonlar

Bu kılavuz, daha geniş Android geliştirme hedeflerini kapsayan, özel olarak seçilmiş Hızlı Kılavuz koleksiyonlarından biridir:

Listeler ve ızgaralar, uygulamanızın koleksiyonları kullanıcıların kolayca kullanabileceği, görsel açıdan hoş bir biçimde göstermesine olanak tanır.
Birleştirilebilir işlevlerin, Materyal Tasarım tasarım sistemine dayalı güzel kullanıcı arayüzü bileşenleri oluşturmanızı nasıl kolaylaştırabileceğini öğrenin.
Bu video serisinde, çeşitli Compose API'leri tanıtılır ve mevcut API'ler ile bunların nasıl kullanılacağı hızlıca gösterilir.

Sorularınız veya geri bildiriminiz mi var?

Sık sorulan sorular sayfamıza giderek kısa kılavuzlar hakkında bilgi edinebilir veya bize ulaşarak düşüncelerinizi bizimle paylaşabilirsiniz.