পেজিং লাইব্রেরি ওভারভিউ Android Jetpack-এর অংশ।
পেজিং লাইব্রেরি আপনাকে স্থানীয় স্টোরেজ বা নেটওয়ার্ক থেকে বড় ডেটাসেটের ডেটা লোড ও ডিসপ্লে করতে সাহায্য করে। এই পদ্ধতি আপনার অ্যাপকে নেটওয়ার্ক ব্যান্ডউইথ ও সিস্টেম রিসোর্স, দুটিই আরও দক্ষতার সাথে ব্যবহার করতে দেয়। পেজিং লাইব্রেরির কম্পোনেন্টগুলি সাজেস্ট করা Android অ্যাপ আর্কিটেকচার-এর সাথে মানানসই করে ডিজাইন করা হয়েছে, অন্যান্য Jetpack কম্পোনেন্টের সাথে পরিষ্কারভাবে ইন্টিগ্রেট করা হয়েছে এবং ফার্স্ট-ক্লাস Kotlin সহায়তা প্রদান করে।
পেজিং লাইব্রেরি ব্যবহার করার সুবিধা
পেজিং লাইব্রেরিতে নিম্নলিখিত ফিচারগুলি অন্তর্ভুক্ত রয়েছে:
- আপনার পেজ করা ডেটার জন্য ইন-মেমরি ক্যাশিং। এটি নিশ্চিত করতে সাহায্য করে যে আপনার অ্যাপ পেজ করা ডেটার সাথে কাজ করার সময় সিস্টেম রিসোর্স দক্ষতার সাথে ব্যবহার করে।
- বিল্ট-ইন অনুরোধ ডিডুপ্লিকেশন, যা আপনার অ্যাপ যাতে নেটওয়ার্ক ব্যান্ডউইথ এবং সিস্টেম রিসোর্স দক্ষতার সাথে ব্যবহার করে তা নিশ্চিত করতে সাহায্য করে।
- Kotlin কোরুটিন ও ফ্লোর জন্য ফার্স্ট-ক্লাস সাপোর্ট।
- রিফ্রেশ ও আবার চেষ্টা করার ক্ষমতা সহ সমস্যা সমাধানের জন্য বিল্ট-ইন সহায়তা।
সেট-আপ করুন
আপনার Android অ্যাপে পেজিং কম্পোনেন্ট ইমপোর্ট করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিত
ডিপেন্ডেন্সি যোগ করুন:
Kotlin
dependencies { val paging_version = "3.4.2" implementation("androidx.paging:paging-common:$paging_version") // Jetpack Compose integration implementation("androidx.paging:paging-compose:$paging_version") }
গ্ৰুভি
dependencies { def paging_version = "3.4.2" implementation "androidx.paging:paging-common:$paging_version" // Jetpack Compose integration implementation "androidx.paging:paging-compose:$paging_version" }
লাইব্রেরি আর্কিটেকচার
পেজিং লাইব্রেরির কম্পোনেন্ট আপনার অ্যাপের তিনটি স্তরে কাজ করে:
- রিপোজিটরি লেয়ার
ViewModelলেয়ার- UI লেয়ার
এই বিভাগে পেজিং লাইব্রেরির কম্পোনেন্ট সম্পর্কে বর্ণনা করা হয়েছে যা প্রতিটি লেয়ারে অপারেট করে এবং কীভাবে সেগুলি একসাথে কাজ করে পেজ করা ডেটা লোড ও ডিসপ্লে করে।
রিপোজিটরি লেয়ার
রিপোজিটরি লেয়ারে প্রাথমিক পেজিং লাইব্রেরি কম্পোনেন্ট হল
PagingSource। প্রতিটি
PagingSource অবজেক্ট ডেটার সোর্স এবং সেই সোর্স থেকে কীভাবে ডেটা ফিরিয়ে আনতে হবে তা নির্ধারণ করে। PagingSource অবজেক্ট নেটওয়ার্ক সোর্স ও লোকাল ডেটাবেস সহ
যেকোনও একটি সোর্স থেকে ডেটা লোড করতে পারে।
আপনি ব্যবহার করতে পারেন এমন আরেকটি পেজিং লাইব্রেরি কম্পোনেন্ট হল
RemoteMediator। একটি
RemoteMediator অবজেক্ট একটি লেয়ার্ড ডেটা সোর্স থেকে পেজিং পরিচালনা করে, যেমন একটি
স্থানীয় ডাটাবেস ক্যাশে সহ নেটওয়ার্ক ডেটা সোর্স।
ViewModel লেয়ার
Pager কম্পোনেন্ট PagingSource অবজেক্ট এবং
PagingConfig কনফিগারেশন অবজেক্টের উপর ভিত্তি করে
রিঅ্যাক্টিভ স্ট্রিমে দেখানো PagingData-এর ইনস্ট্যান্স তৈরি করার জন্য
একটি পাবলিক API প্রদান করে।
ViewModel লেয়ারকে UI-এর সাথে কানেক্ট করে এমন কম্পোনেন্ট হল
PagingData। PagingData
অবজেক্ট হল পৃষ্ঠা সংখ্যা সহ ডেটার স্ন্যাপশটের একটি কন্টেনার। এটি একটি
PagingSource অবজেক্ট কোয়েরি করে এবং
ফলাফল স্টোর করে।
UI লেয়ার
প্রাইমারি পেজিং UI API হল collectAsLazyPagingItems()। এটি পেজ করা আইটেমকে ডেটার তালিকা হিসেবে দেখায় যা Compose-এর লেজি লেআউট কম্পোনেন্ট, যেমন LazyColumn এবং LazyRow-এর মাধ্যমে সহজেই ব্যবহার করা যায়।
Compose-এর সাথে মানানসই API ব্যবহার করতে androidx.paging:paging-compose লাইব্রেরি যোগ করুন
যা UI-কে অ্যাডাপ্টার বা ডিফারেন্সিং লজিক ছাড়াই ডেটা লোড, আপডেট এবং সমস্যার ক্ষেত্রে
অটোমেটিক প্রতিক্রিয়া জানাতে দেয়। Flow<PagingData>-এ
collectAsLazyPagingItems() এক্সটেনশন ফাংশন ব্যবহার করুন
যাতে LazyColumn-এ items()-এ ফেরত আসা LazyPagingItems পাস করা যায়।
@Composable fun MessageList(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() } } } }
আরও তথ্যের জন্য, বড় ডেটা-সেট (পেজিং) দেখুন।
আপনার জন্য সাজেস্ট করা হয়েছে
- মনে রাখবেন: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট দেখানো হয়
- পৃষ্ঠা অনুযায়ী ডেটা লোড ও ডিসপ্লে করা
- পেজিং ৩-এ মাইগ্রেট করুন
- নেটওয়ার্ক ও ডেটাবেস থেকে পৃষ্ঠা