Paging 3 Kotlin: पूरी गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Paging 3 Kotlin: पूरी गाइड उदाहरणों के साथ

1. यह क्या है और क्यों ज़रूरी है

Paging 3, Google की Android के लिए एक लाइब्रेरी है जो Kotlin में लिखी गई है। यह मोबाइल डेवलपमेंट की सबसे आम समस्या को हल करती है: डेटा को पेजों में लोड करना (pagination)। जब आपके पास हज़ारों या लाखों आइटम की लिस्ट हो (जैसे न्यूज़ फीड, चैट मैसेज, कैटलॉग में प्रोडक्ट), तो सारा डेटा एक साथ लोड करना नामुमकिन है - इससे मेमोरी फुल हो जाएगी, UI हैंग हो जाएगा और बहुत ज़्यादा डेटा खर्च होगा। Paging 3, यूज़र के स्क्रॉल करने पर डेटा को छोटे-छोटे पेजों में ऑटोमैटिक लोड करने की प्रक्रिया को आसान बनाता है।

यह लाइब्रेरी आधुनिक सिद्धांतों पर बनी है: यह async काम के लिए Kotlin कोरूटीन, रिएक्टिव डेटा अपडेट के लिए Flow का उपयोग करती है और Jetpack Compose व RecyclerView के साथ पूरी तरह इंटीग्रेट होती है। पिछले वर्जन (Paging 2) के मुकाबले, Paging 3 ज़्यादा साफ़ आर्किटेक्चर, कम बॉयलरप्लेट कोड और एरर हैंडलिंग, डेटा रिफ्रेश और कैशिंग के लिए बिल्ट-इन सपोर्ट प्रदान करता है।

Paging 3 की सबसे बड़ी खासियत यह है कि आप सिर्फ एक पेज लोड करने का लॉजिक लिखते हैं (जैसे API कॉल), और लाइब्रेरी खुद तय करती है कि अगला पेज कब लोड करना है, डेटा को मेमोरी में कैसे स्टोर करना है, एडॉप्टर को बदलावों के बारे में कैसे सूचित करना है और लोडिंग स्टेटस (लोड हो रहा है, एरर, खाली लिस्ट) को कैसे हैंडल करना है। इससे डेवलपमेंट के घंटे बचते हैं और आपका ऐप बड़े डेटा सेट के साथ भी स्थिर रहता है।

2. इंस्टॉलेशन

Paging 3, Android/Kotlin के लिए एक लाइब्रेरी है, इसलिए इसे pip या npm के बजाय Gradle बिल्ड सिस्टम के ज़रिए इंस्टॉल किया जाता है। build.gradle.kts फ़ाइल (app मॉड्यूल) में डिपेंडेंसी जोड़ें:

// build.gradle.kts (Module: app)
dependencies {
    // Paging 3 की मुख्य लाइब्रेरी
    implementation("androidx.paging:paging-runtime-ktx:3.3.5")
    
    // अगर Jetpack Compose उपयोग कर रहे हैं (वैकल्पिक)
    implementation("androidx.paging:paging-compose:3.3.5")
    
    // अगर RxJava उपयोग कर रहे हैं (वैकल्पिक)
    implementation("androidx.paging:paging-rxjava3:3.3.5")
    
    // टेस्टिंग के लिए (वैकल्पिक)
    testImplementation("androidx.paging:paging-common:3.3.5")
}

Gradle सिंक करने के बाद लाइब्रेरी उपयोग के लिए तैयार है। न्यूनतम SDK वर्जन 21 (Android 5.0) है।

3. तुरंत शुरुआत — न्यूनतम काम करने वाला उदाहरण

चलिए एक बहुत ही सरल स्क्रीन बनाते हैं जो 1 से 1000 तक के नंबरों की लिस्ट को हर पेज में 20 आइटम लोड करता है। इस उदाहरण में तीन भाग हैं: डेटा स्रोत (PagingSource), ViewModel और UI (RecyclerView)।

चरण 1. PagingSource — डेटा स्रोत

class NumberPagingSource : PagingSource<Int, Int>() {
    override suspend fun load(params: LoadParams<Int>): LoadResult<Int, Int> {
        return try {
            // अगले पेज की कुंजी तय करें (अगर null है तो पहली बार लोड हो रहा है)
            val currentPage = params.key ?: 0
            val pageSize = params.loadSize  // आमतौर पर 20
            
            // मौजूदा पेज के लिए डेटा जनरेट करें
            val start = currentPage * pageSize
            val end = minOf(start + pageSize, 1000)
            val numbers = (start until end).toList()
            
            // अगले और पिछले पेज की कुंजियों के साथ रिज़ल्ट लौटाएं
            LoadResult.Page(
                data = numbers,
                prevKey = if (currentPage > 0) currentPage - 1 else null,
                nextKey = if (end < 1000) currentPage + 1 else null
            )
        } catch (e: Exception) {
            LoadResult.Error(e)
        }
    }
    
    // रिफ्रेश के लिए कुंजी लौटाता है (आमतौर पर null या पहली कुंजी)
    override fun getRefreshKey(state: PagingState<Int, Int>): Int? = null
}

चरण 2. ViewModel

class MainViewModel : ViewModel() {
    val pager = Pager(
        config = PagingConfig(pageSize = 20, enablePlaceholders = f                    

अनुशंसाएँ