सूचियों और पेजिंग की मदद से, डेटा को धीरे-धीरे लोड करना

लेज़ी लोडिंग और पेजिंग की मदद से, अपने ऐप्लिकेशन में आइटम की बड़ी सूचियां दिखाई जा सकती हैं. इनमें आइटम की ऐसी सूची भी शामिल है जो कभी खत्म नहीं होती. इसके लिए, डेटा को धीरे-धीरे लोड और दिखाया जाता है. इस तकनीक की मदद से, शुरुआती लोड होने में लगने वाले समय को कम किया जा सकता है. साथ ही, मेमोरी के इस्तेमाल को ऑप्टिमाइज़ किया जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है.

नतीजे

इस वीडियो में दिखाया गया है कि उपयोगकर्ता के स्क्रोल करने पर, बड़ी सूची में डेटा फ़ेच करने की प्रोसेस कैसी दिखती है.

वर्शन के साथ काम करने वाली सुविधाएं

इसे लागू करने के लिए, ज़रूरी है कि आपके प्रोजेक्ट का minSDK, एपीआई लेवल 21 या उससे ज़्यादा पर सेट हो.

डिपेंडेंसी

पेज पर मौजूद कॉन्टेंट दिखाना

पेजिंग लाइब्रेरी की मदद से, लोकल स्टोरेज या नेटवर्क से मिले बड़े डेटासेट से डेटा के पेज लोड किए जा सकते हैं और दिखाए जा सकते हैं. पेज के हिसाब से बंटी हुई सूची दिखाने के लिए, यहां दिए गए कोड का इस्तेमाल करें. इस सूची में एक प्रोग्रेस बार दिखता है, जिससे उपयोगकर्ता को पता चलता है कि ज़्यादा डेटा फ़ेच किया जा रहा है:

@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 में पेज पर मौजूद डेटा को लोड करने और उसे दिखाने की प्रोसेस को बेहतर तरीके से मैनेज करता है. यह LazyColumn कंपोज़ेबल में, LazyPagingItems को items में पास करता है.
  • MessageRow(message: Text), अलग-अलग मैसेज आइटम को रेंडर करने के लिए ज़िम्मेदार है. यह कार्ड में मैसेज भेजने वाले व्यक्ति और मैसेज के टेक्स्ट को दिखाता है.
  • MessagePlaceholder(), मैसेज का असल डेटा फ़ेच होने के दौरान, विज़ुअल प्लेसहोल्डर (लोडिंग स्पिनर) दिखाता है. इससे उपयोगकर्ता अनुभव बेहतर होता है.

इस गाइड को शामिल करने वाले कलेक्शन

यह गाइड, क्विक गाइड के चुने गए कलेक्शन का हिस्सा है. इसमें Android डेवलपमेंट के बड़े लक्ष्यों के बारे में बताया गया है:

सूचियों और ग्रिड की मदद से, आपका ऐप्लिकेशन कलेक्शन को आकर्षक तरीके से दिखा सकता है. इससे उपयोगकर्ताओं के लिए, कॉन्टेंट को देखना और समझना आसान हो जाता है.
जानें कि ऐप्लिकेशन बनाने की सुविधा की मदद से, मटीरियल डिज़ाइन सिस्टम के आधार पर खूबसूरत यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट आसानी से कैसे बनाए जा सकते हैं.
वीडियो की इस सीरीज़ में, Compose के अलग-अलग एपीआई के बारे में बताया गया है. इसमें आपको यह जानकारी मिलेगी कि कौनसे एपीआई उपलब्ध हैं और उन्हें कैसे इस्तेमाल किया जा सकता है.

क्या आपके पास कोई सवाल या सुझाव है

अक्सर पूछे जाने वाले सवालों के पेज पर जाएं और क्विक गाइड के बारे में जानें. इसके अलावा, हमसे संपर्क करके अपनी राय दें.