ডায়নামিক তালিকা কাস্টমাইজ করা Android Jetpack-এর অংশ।
আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী
RecyclerView
অবজেক্ট কাস্টমাইজ করতে পারবেন। RecyclerView-এর মাধ্যমে
ডায়নামিক তালিকা তৈরি করুন লিঙ্কে স্ট্যান্ডার্ড ক্লাস সম্পর্কে বর্ণনা করা হয়েছে যা বেশিরভাগ ডেভেলপারদের প্রয়োজনীয় সব কার্যকারিতা প্রদান করে। অনেক
ক্ষেত্রে, আপনাকে শুধু প্রতিটি ভিউ হোল্ডারের জন্য ভিউ ডিজাইন করতে হবে এবং উপযুক্ত ডেটা সহ সেই ভিউগুলি আপডেট করার জন্য
কোড লিখতে হবে। তবে, আপনার অ্যাপের যদি
নির্দিষ্ট প্রয়োজনীয়তা থাকে, তাহলে আপনি বিভিন্ন উপায়ে স্ট্যান্ডার্ড আচরণ পরিবর্তন করতে পারেন।
এই ডকুমেন্টে সম্ভাব্য কিছু কাস্টমাইজেশন সম্পর্কে বর্ণনা করা হয়েছে।
লেআউট পরিবর্তন করুন
RecyclerView স্ক্রিনে আলাদা আলাদা আইটেম পজিশন করতে এবং ব্যবহারকারী আর দেখতে পাচ্ছেন না এমন আইটেম ভিউ কখন আবার ব্যবহার করা হবে তা নির্ধারণ করতে লেআউট ম্যানেজার ব্যবহার করে। কোনও ভিউ আবার ব্যবহার করতে—বা রিসাইকেল করতে—লেআউট
ম্যানেজার অ্যাডাপ্টারকে ডেটাসেট থেকে অন্য কোনও এলিমেন্ট দিয়ে ভিউয়ের কন্টেন্ট
পরিবর্তন করতে বলতে পারে। এইভাবে ভিউ রিসাইকেল করলে, অপ্রয়োজনীয় ভিউ তৈরি করা বা
findViewById()
লুকআপের মতো ব্যয়বহুল
কাজ এড়িয়ে পারফর্ম্যান্স উন্নত করা যায়। Android সাপোর্ট লাইব্রেরিতে তিনটি স্ট্যান্ডার্ড লেআউট ম্যানেজার অন্তর্ভুক্ত থাকে,
যার প্রত্যেকটি অনেক কাস্টমাইজেশন বিকল্প অফার করে:
LinearLayoutManager: আইটেমগুলিকে এক-মাত্রিক তালিকায় সাজায়।LinearLayoutManager-এর সাথেRecyclerViewব্যবহার করলেListViewলেআউটের মতো ফাংশনালিটি পাওয়া যায়।GridLayoutManager: আইটেমগুলিকে দ্বিমাত্রিক গ্রিডে সাজায়, যেমন দাবার বোর্ডের বর্গক্ষেত্র।GridLayoutManager-এর সাথেRecyclerViewব্যবহার করলেGridViewলেআউটের মতো কার্যকারিতা পাওয়া যায়।StaggeredGridLayoutManager: আইটেমগুলিকে একটি দ্বি-মাত্রিক গ্রিডে সাজায়, প্রতিটি কলাম আগেরটির থেকে সামান্য অফসেট থাকে, যেমন আমেরিকান পতাকার তারাগুলি।
এইসব লেআউট ম্যানেজার আপনার প্রয়োজন পূরণ করতে না পারলে, আপনি
RecyclerView.LayoutManager
অ্যাবস্ট্রাক্ট ক্লাস বাড়িয়ে নিজের লেআউট ম্যানেজার তৈরি করতে পারবেন।
আইটেম অ্যানিমেশন যোগ করুন
কোনও আইটেম পরিবর্তন হলে, RecyclerView সেটির চেহারা পরিবর্তন করতে অ্যানিমেটর
ব্যবহার করে। এই অ্যানিমেটর হল একটি অবজেক্ট যা অ্যাবস্ট্রাক্ট
RecyclerView.ItemAnimator
ক্লাসকে এক্সটেন্ড করে। ডিফল্ট হিসেবে, RecyclerView
DefaultItemAnimator
ব্যবহার করে অ্যানিমেশন প্রদান করে। আপনি কাস্টম অ্যানিমেশন প্রদান করতে চাইলে, RecyclerView.ItemAnimator এক্সটেন্ড করে
আপনার নিজস্ব অ্যানিমেটর অবজেক্ট সংজ্ঞায়িত করতে পারবেন।
তালিকার আইটেম বেছে নেওয়ার সুবিধা চালু করুন
recyclerview-selection
লাইব্রেরি ব্যবহারকারীদের টাচ বা মাউস ইনপুট ব্যবহার করে RecyclerView তালিকা থেকে আইটেম বেছে নিতে দেয়। এটি আপনাকে বেছে নেওয়া আইটেমের ভিজ্যুয়াল প্রেজেন্টেশনের উপর নিয়ন্ত্রণ বজায় রাখতে সাহায্য করে। এছাড়াও, আপনি বেছে নেওয়ার আচরণ নিয়ন্ত্রণকারী নীতির উপর নিয়ন্ত্রণ বজায় রাখতে পারেন, যেমন কোন আইটেম বেছে নেওয়ার জন্য উপযুক্ত এবং কতগুলি আইটেম বেছে নেওয়া যেতে পারে।
RecyclerView ইনস্ট্যান্সে সিলেকশন সাপোর্ট যোগ করতে, এইসব ধাপ অনুসরণ করুন:
- কোন ধরনের সিলেকশন কী ব্যবহার করবেন তা নির্ধারণ করুন, তারপর একটি
ItemKeyProviderতৈরি করুন।বেছে নেওয়া আইটেম শনাক্ত করার জন্য আপনি তিন ধরনের কী ব্যবহার করতে পারবেন:
Parcelableএবং এর সাবক্লাস, যেমনUriStringLong
নির্বাচন-কী-এর ধরন সম্পর্কে বিস্তারিত তথ্যের জন্য,
SelectionTracker.Builderদেখুন। ItemDetailsLookupপ্রয়োগ করুন।- আইটেম আপডেট করুন
RecyclerView-এViewঅবজেক্ট ব্যবহারকারী বেছে নিয়েছেন নাকি বেছে নেননি তা দেখানোর জন্য।বাছাই করা আইটেমের জন্য সিলেকশন লাইব্রেরি ডিফল্ট ভিজ্যুয়াল ডেকোরেশন প্রদান করে না। আপনি
onBindViewHolder()প্রয়োগ করার সময় এটি প্রদান করুন। আমরা নিম্নলিখিত পদ্ধতি অনুসরণ করতে সাজেস্ট করি:onBindViewHolder()-এ,setActivated()—নয়setSelected()—কল করুনViewঅবজেক্টেtrueবাfalse-এর সাথে, আইটেমটি বেছে নেওয়া হয়েছে কিনা তার উপর নির্ভর করে।- অ্যাক্টিভেট করা স্ট্যাটাস দেখানোর জন্য ভিউয়ের স্টাইলিং আপডেট করুন। স্টাইলিং কনফিগার করার জন্য আমরা কালার স্টেট লিস্ট রিসোর্স ব্যবহার করার সাজেশন দিই।
ActionModeব্যবহার করুন যাতে ব্যবহারকারীকে টুল প্রদান করা যায় যার মাধ্যমে তিনি বেছে নেওয়া আইটেমের উপর অ্যাকশন নিতে পারেন।- ব্যাখ্যা করা হয়েছে এমন যেকোনও সেকেন্ডারি অ্যাকশন পারফর্ম করা।
SelectionTracker.Builder-এর মাধ্যমে সবকিছু অ্যাসেম্বল করুন।- অ্যাক্টিভিটি লাইফসাইকেল ইভেন্টে বেছে নেওয়া আইটেম অন্তর্ভুক্ত করুন।
ItemDetailsLookup, MotionEvent-এর জন্য RecyclerView আইটেম সম্পর্কে
তথ্য অ্যাক্সেস করার জন্য সিলেকশন লাইব্রেরিকে
অনুমতি দেয়।
এটি আসলে
ItemDetails
ইনস্ট্যান্সের জন্য একটি ফ্যাক্টরি যা
RecyclerView.ViewHolder
ইনস্ট্যান্স থেকে ব্যাক-আপ নেওয়া বা এক্সট্র্যাক্ট করা হয়।
একটি
SelectionTracker.SelectionObserver
রেজিস্টার করুন যাতে কোনও বাছাই পরিবর্তন হলে বিজ্ঞপ্তি পাঠানো যায়। কোনও সিলেকশন প্রথমবার তৈরি করা হলে,
ব্যবহারকারীকে এটি দেখানোর জন্য ActionMode শুরু করুন এবং
সিলেকশন-নির্দিষ্ট অ্যাকশন প্রদান করুন। যেমন, আপনি ActionMode বারে একটি 'মুছুন' বোতাম যোগ করতে পারেন এবং
বেছে নেওয়া আইটেম মুছে দিতে বারে থাকা 'ফিরে যান' তীরচিহ্নটি
কানেক্ট করতে পারেন। বেছে নেওয়া আইটেম খালি হয়ে গেলে—ব্যবহারকারী শেষবার বেছে নেওয়া আইটেম
মুছে দিলে—অ্যাকশন মোড বন্ধ করুন।
ইভেন্ট প্রসেসিং পাইপলাইনের শেষে, লাইব্রেরি নির্ধারণ করতে পারে যে ব্যবহারকারী
কোনও আইটেম ট্যাপ করে সেটি অ্যাক্টিভেট করার চেষ্টা করছেন অথবা কোনও আইটেম বা
বেছে নেওয়া আইটেমের সেট ড্র্যাগ করার চেষ্টা করছেন। উপযুক্ত লিসেনার রেজিস্টার করে
এইসব ইন্টারপ্রিটেশনে প্রতিক্রিয়া জানান। আরও তথ্যের জন্য, SelectionTracker.Builder
দেখুন।
এইসব তথ্য কীভাবে একসাথে ব্যবহার করতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখুন:
Kotlin
var tracker = SelectionTracker.Builder( "my-selection-id", recyclerView, StableIdKeyProvider(recyclerView), MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build()
জাভা
SelectionTracker tracker = new SelectionTracker.Builder<>( "my-selection-id", recyclerView, new StableIdKeyProvider(recyclerView), new MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build();
SelectionTracker
ইনস্ট্যান্স তৈরি করতে, আপনার অ্যাপকে অবশ্যই একই
RecyclerView.Adapter
সরবরাহ করতে হবে যা আপনি RecyclerView থেকে
SelectionTracker.Builder-এ শুরু করতে ব্যবহার করেন। এই কারণে, আপনি SelectionTracker ইনস্ট্যান্স তৈরি করার পরে, এটি আপনার RecyclerView.Adapter-এ
ইনজেক্ট করুন। অন্যথায়, আপনি onBindViewHolder() পদ্ধতি থেকে কোনও আইটেমের
বেছে নেওয়া স্ট্যাটাস চেক করতে পারবেন না।
অ্যাক্টিভিটি লাইফসাইকেল ইভেন্ট জুড়ে বেছে নেওয়ার স্ট্যাটাস বজায় রাখতে, আপনার অ্যাপকে
অবশ্যই অ্যাক্টিভিটির
onSaveInstanceState()
এবং
onRestoreInstanceState()
মেথড থেকে যথাক্রমে সিলেকশন ট্র্যাকারের
onSaveInstanceState()
এবং
onRestoreInstanceState()
মেথড কল করতে হবে। এছাড়াও, আপনার অ্যাপকে অবশ্যই SelectionTracker.Builder কনস্ট্রাক্টরে একটি অনন্য সিলেকশন আইডি
প্রদান করতে হবে। এই আইডি প্রয়োজন কারণ
কোনও অ্যাক্টিভিটি বা ফ্র্যাগমেন্টে একাধিক স্বতন্ত্র, বেছে নেওয়ার মতো তালিকা থাকতে পারে,
যার সবকটিই সেভ করা অবস্থায় রাখতে হবে।
অতিরিক্ত রিসোর্স
অতিরিক্ত তথ্যের জন্য নিম্নলিখিত রেফারেন্স দেখুন।
- Sunflower
ডেমো অ্যাপ, যা
RecyclerViewব্যবহার করে। - স্ক্রল করা যায় এমন তালিকা দেখাতে RecyclerView ব্যবহার করুন কোডল্যাব।
- Android Kotlin Fundamentals: RecyclerView fundamentals কোডল্যাব।