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