RecyclerView
হল একটি ভিউ উপাদান যা দক্ষতার সাথে ডেটার বড় সেট প্রদর্শন করা সহজ করে তোলে। ডেটা সেটের প্রতিটি আইটেমের জন্য ভিউ তৈরি করার পরিবর্তে, RecyclerView
আপনার অ্যাপের কার্যকারিতা উন্নত করে যাতে আপনি সেই আইটেমগুলির মাধ্যমে স্ক্রোল করার সাথে সাথে একটি ছোট ভিউ রেখে এবং সেগুলির মাধ্যমে পুনর্ব্যবহার করেন৷
রচনায়, আপনি একই জিনিসটি সম্পন্ন করতে অলস তালিকা ব্যবহার করতে পারেন। এই পৃষ্ঠাটি বর্ণনা করে যে আপনি কীভাবে আপনার RecyclerView
বাস্তবায়ন স্থানান্তর করতে পারেন রচনায় অলস তালিকা ব্যবহার করতে।
মাইগ্রেশন পদক্ষেপ
রচনায় আপনার RecyclerView
বাস্তবায়ন স্থানান্তর করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
মন্তব্য করুন বা আপনার UI শ্রেণিবিন্যাস থেকে
RecyclerView
সরান এবং এটিকে প্রতিস্থাপন করতে একটিComposeView
যোগ করুন যদি এখনও অনুক্রমের মধ্যে কেউ উপস্থিত না থাকে। এটি অলস তালিকার জন্য ধারক যা আপনি যোগ করবেন:<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <!-- <androidx.recyclerview.widget.RecyclerView--> <!-- android:id="@+id/recycler_view"--> <!-- android:layout_width="match_parent"--> <!-- android:layout_height="match_parent />"--> <androidx.compose.ui.platform.ComposeView android:id="@+id/compose_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
আপনার
RecyclerView
এর লেআউট ম্যানেজার (নীচের সারণী দেখুন) উপর ভিত্তি করে আপনার কি ধরনের অলস তালিকা কম্পোজেবল প্রয়োজন তা নির্ধারণ করুন। আপনি যে কম্পোজেবল নির্বাচন করেছেন সেটি হবে আগের ধাপে যোগ করাComposeView
-এর টপ-লেভেল কম্পোজেবল।LayoutManager
রচনাযোগ্য
LinearLayoutManager
LazyColumn
বাLazyRow
GridLayoutManager
LazyVerticalGrid
বাLazyHorizontalGrid
StaggeredGridLayoutManager
LazyVerticalStaggeredGrid
বাLazyHorizontalStaggeredGrid
// recyclerView.layoutManager = LinearLayoutManager(context) composeView.setContent { LazyColumn(Modifier.fillMaxSize()) { // We use a LazyColumn since the layout manager of the RecyclerView is a vertical LinearLayoutManager } }
আপনার
RecyclerView.Adapter
বাস্তবায়নে প্রতিটি ভিউ টাইপের জন্য একটি সংশ্লিষ্ট কম্পোজেবল তৈরি করুন। প্রতিটি ভিউ টাইপ সাধারণত একটিViewHolder
সাবক্লাসে ম্যাপ করে, যদিও এটি সবসময় নাও হতে পারে। এই কম্পোজেবলগুলি আপনার তালিকার বিভিন্ন ধরণের উপাদানগুলির জন্য UI উপস্থাপনা হিসাবে ব্যবহার করা হবে:@Composable fun ListItem(data: MyData, modifier: Modifier = Modifier) { Row(modifier.fillMaxWidth()) { Text(text = data.name) // … other composables required for displaying `data` } }
আপনার
RecyclerView.Adapter
এরonCreateViewHolder()
এবংonBindViewHolder()
পদ্ধতির লজিক এই কম্পোজেবল এবং আপনি যে অবস্থা দিয়ে দেবেন তা দ্বারা প্রতিস্থাপিত হবে। কম্পোজে, একটি আইটেমের জন্য একটি কম্পোজেবল তৈরি করা এবং এতে ডেটা আবদ্ধ করার মধ্যে কোনো বিভাজন নেই—এই ধারণাগুলি একত্রিত হয়।অলস তালিকার
content
স্লটের মধ্যে (পরবর্তী ল্যাম্বডা প্যারামিটার), আপনার তালিকার ডেটার মাধ্যমে পুনরাবৃত্তি করতেitems()
ফাংশন (বা সমতুল্য ওভারলোড) ব্যবহার করুন।itemContent
ল্যাম্বডাতে, আপনার ডেটার জন্য উপযুক্ত রচনাযোগ্য আইটেমটি আহ্বান করুন:val data = listOf<MyData>(/* ... */) composeView.setContent { LazyColumn(Modifier.fillMaxSize()) { items(data) { ListItem(it) } } }
সাধারণ ব্যবহারের ক্ষেত্রে
আইটেম সজ্জা
RecyclerView
একটি ItemDecoration
ধারণা রয়েছে, যা আপনি তালিকায় আইটেমগুলির জন্য একটি বিশেষ অঙ্কন যোগ করতে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি আইটেমগুলির মধ্যে বিভাজক যোগ করতে একটি ItemDecoration
যোগ করতে পারেন:
val itemDecoration = DividerItemDecoration(recyclerView.context, LinearLayoutManager.VERTICAL) recyclerView.addItemDecoration(itemDecoration)
রচনা আইটেম সজ্জা একটি সমতুল্য ধারণা নেই. পরিবর্তে, আপনি কম্পোজিশনে সরাসরি তালিকায় যেকোনো UI সজ্জা যোগ করতে পারেন। উদাহরণস্বরূপ, তালিকায় বিভাজক যোগ করতে, আপনি প্রতিটি আইটেমের পরে Divider
কম্পোজেবল ব্যবহার করতে পারেন:
LazyColumn(Modifier.fillMaxSize()) { itemsIndexed(data) { index, d -> ListItem(d) if (index != data.size - 1) { Divider() } } }
আইটেম অ্যানিমেশন
অ্যাডাপ্টারে পরিবর্তন করার সাথে সাথে আইটেমগুলির চেহারা অ্যানিমেট করতে একটি ItemAnimator
একটি RecyclerView
সেট করা যেতে পারে। ডিফল্টরূপে, RecyclerView
DefaultItemAnimator
ব্যবহার করে যা ইভেন্টগুলি সরানো, যোগ করা এবং সরানোর জন্য মৌলিক অ্যানিমেশন সরবরাহ করে।
animateItemPlacement
মডিফায়ারের মাধ্যমে অলস তালিকাগুলির একটি অনুরূপ ধারণা রয়েছে। আরও জানতে আইটেম অ্যানিমেশন দেখুন।
অতিরিক্ত সম্পদ
একটি RecyclerView
রচনায় স্থানান্তরিত করার বিষয়ে আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি দেখুন:
- তালিকা এবং গ্রিড : কম্পোজে তালিকা এবং গ্রিডগুলি কীভাবে প্রয়োগ করা যায় তার জন্য ডকুমেন্টেশন।
- জেটপ্যাক কম্পোজ ইন্টারপ: একটি রিসাইক্লারভিউতে কম্পোজ ব্যবহার করা : একটি
RecyclerView
এর মধ্যে কম্পোজ করার জন্য ব্লগ পোস্ট।
আপনার জন্য প্রস্তাবিত
- দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট প্রদর্শিত হয়
- তালিকা এবং গ্রিড
- রচনা করার জন্য
CoordinatorLayout
স্থানান্তর করুন - অন্যান্য বিবেচনা