পেজিং লাইব্রেরি এক নজরে Android Jetpack-এর অংশ।
পেজিং লাইব্রেরি আপনাকে লোকাল স্টোরেজ বা নেটওয়ার্কের মাধ্যমে অনেক বড় ডেটা সেট থেকে ডেটার পৃষ্ঠা লোড ও দেখাতে সাহায্য করে। এই পদ্ধতিতে আপনার অ্যাপ আরও দক্ষতার সাথে নেটওয়ার্ক ব্যান্ডউইথ ও সিস্টেম রিসোর্স ব্যবহার করতে পারে। সাজেস্ট করা Android অ্যাপ আর্কিটেকচারে ফিট করার জন্য পেজিং লাইব্রেরির কম্পোনেন্ট ডিজাইন করা হয়েছে, অন্যান্য Jetpack কম্পোনেন্টের সাথে পরিষ্কারভাবে ইন্টিগ্রেট করা হয়েছে এবং ফার্স্ট-ক্লাস Kotlin সহায়তা প্রদান করে।
Paging লাইব্রেরি ব্যবহার করার সুবিধা
পেজিং লাইব্রেরিতে নিম্নলিখিত ফিচার রয়েছে:
- আপনার পেজ করা ডেটার জন্য ইন-মেমরি ক্যাশিং। পেজ করা ডেটা নিয়ে কাজ করার সময় আপনার অ্যাপ যাতে সিস্টেম রিসোর্স দক্ষতার সাথে ব্যবহার করে, তা নিশ্চিত করতে এটি সাহায্য করে।
- বিল্ট-ইন অনুরোধ ডিডুপ্লিকেশন, যা নিশ্চিত করতে সাহায্য করে যে আপনার অ্যাপ নেটওয়ার্ক ব্যান্ডউইথ এবং সিস্টেম রিসোর্স দক্ষতার সাথে ব্যবহার করে।
- 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 অবজেক্ট যেকোনও একটি সোর্স থেকে ডেটা লোড করতে পারে,
এর মধ্যে নেটওয়ার্ক সোর্স ও লোকাল ডেটাবেস অন্তর্ভুক্ত।
আপনি ব্যবহার করতে পারেন এমন আরেকটি Paging লাইব্রেরি কম্পোনেন্ট হল
RemoteMediator। A
RemoteMediator অবজেক্ট, লেয়ার করা ডেটা সোর্স থেকে পেজিং ম্যানেজ করে, যেমন
লোকাল ডেটাবেস ক্যাশে সহ নেটওয়ার্ক ডেটা সোর্স।
ViewModel লেয়ার
Pager কম্পোনেন্ট PagingData-এর এমন ইন্সট্যান্স তৈরি করার জন্য
পাবলিক API প্রদান করে যা PagingSource অবজেক্ট ও
PagingConfig কনফিগারেশন
অবজেক্টের উপর ভিত্তি করে
রিঅ্যাক্টিভ স্ট্রিমে এক্সপোজ করা হয়।
ViewModel লেয়ারকে UI-এর সাথে কানেক্ট করা কম্পোনেন্ট হল
PagingData. PagingData
অবজেক্ট হল পেজ নম্বর দেওয়া ডেটার স্ন্যাপশটের কন্টেনার। এটি একটি
PagingSource অবজেক্ট কোয়েরি করে এবং
ফলাফল স্টোর করে।
UI লেয়ার
প্রাইমারি পেজিং UI API হল collectAsLazyPagingItems()। এটি paged
আইটেমকে ডেটার একটি তালিকা হিসেবে দেখায় যা Compose-এর লেজি লেআউট
কম্পোনেন্ট, যেমন LazyColumn ও LazyRow সহজেই ব্যবহার করতে পারে।
Compose-এর সাথে মানানসই API ব্যবহার করতে androidx.paging:paging-compose লাইব্রেরি যোগ করুন
যা UI-কে অ্যাডাপ্টার বা ডিফারেন্সিং লজিক ছাড়াই ডেটা লোড, আপডেট ও
ভুল হলে অটোমেটিক প্রতিক্রিয়া জানাতে দেয়। Flow<PagingData>-এ
LazyPagingItems থেকে পাওয়া ভ্যালু items()-এ LazyColumn-এর মাধ্যমে পাস করতে, collectAsLazyPagingItems() এক্সটেনশন ফাংশন ব্যবহার করুন।
@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() } } } }
আরও তথ্যের জন্য, বৃহৎ ডেটা-সেট (পেজিং) দেখুন।
আপনার জন্য সাজেস্ট করা হয়েছে
- মনে রাখবেন: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট দেখানো হয়
- পেজ করা ডেটা লোড ও ডিসপ্লে করা
- Paging 3-এ মাইগ্রেট করুন
- নেটওয়ার্ক ও ডেটাবেস থেকে পাওয়া পৃষ্ঠা