একটি গতিশীল তালিকা কাস্টমাইজ করুন অ্যান্ড্রয়েড জেটপ্যাকের অংশ।
আপনি আপনার নির্দিষ্ট চাহিদা মেটাতে RecyclerView
অবজেক্ট কাস্টমাইজ করতে পারেন। RecyclerView এর সাথে ডায়নামিক তালিকা তৈরি করুন- এ বর্ণিত স্ট্যান্ডার্ড ক্লাসগুলি বেশিরভাগ বিকাশকারীদের প্রয়োজনীয় সমস্ত কার্যকারিতা প্রদান করে। অনেক ক্ষেত্রে, আপনাকে শুধুমাত্র প্রতিটি ভিউ হোল্ডারের জন্য ভিউ ডিজাইন করতে হবে এবং উপযুক্ত ডেটা দিয়ে সেই ভিউ আপডেট করতে কোড লিখতে হবে। যাইহোক, আপনার অ্যাপের নির্দিষ্ট প্রয়োজনীয়তা থাকলে, আপনি বিভিন্ন উপায়ে মানক আচরণ পরিবর্তন করতে পারেন। এই নথিতে সম্ভাব্য কিছু কাস্টমাইজেশন বর্ণনা করা হয়েছে।
লেআউট পরিবর্তন করুন
RecyclerView
একটি লেআউট ম্যানেজার ব্যবহার করে স্ক্রিনে পৃথক আইটেমগুলির অবস্থান নির্ধারণ করতে এবং কখন আইটেম ভিউ পুনরায় ব্যবহার করতে হবে তা নির্ধারণ করতে যা ব্যবহারকারীর কাছে আর দৃশ্যমান নয়। একটি ভিউ পুনঃব্যবহার বা পুনর্ব্যবহার করতে, একটি লেআউট ম্যানেজার অ্যাডাপ্টারকে ডেটাসেট থেকে একটি ভিন্ন উপাদান দিয়ে ভিউয়ের বিষয়বস্তু প্রতিস্থাপন করতে বলতে পারে। এইভাবে ভিউ রিসাইক্লিং করা অপ্রয়োজনীয় ভিউ তৈরি এড়িয়ে বা ব্যয়বহুল findViewById()
লুকআপ সম্পাদন করে কর্মক্ষমতা উন্নত করে। অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরিতে তিনটি স্ট্যান্ডার্ড লেআউট ম্যানেজার রয়েছে, যার প্রতিটিতে অনেকগুলি কাস্টমাইজেশন বিকল্প রয়েছে:
-
LinearLayoutManager
: আইটেমগুলিকে এক-মাত্রিক তালিকায় সাজায়।LinearLayoutManager
এর সাথেRecyclerView
ব্যবহার করাListView
লেআউটের মতো কার্যকারিতা প্রদান করে। -
GridLayoutManager
: একটি দ্বি-মাত্রিক গ্রিডে আইটেমগুলিকে সাজায়, যেমন একটি চেকারবোর্ডের স্কোয়ারগুলি।GridLayoutManager
এর সাথে একটিRecyclerView
ব্যবহার করা একটিGridView
লেআউটের মতো কার্যকারিতা প্রদান করে। -
StaggeredGridLayoutManager
: আইটেমগুলিকে একটি দ্বি-মাত্রিক গ্রিডে সাজায়, প্রতিটি কলাম আগের থেকে কিছুটা অফসেট করে, যেমন একটি আমেরিকান পতাকার তারার মতো।
যদি এই লেআউট ম্যানেজারগুলি আপনার প্রয়োজন অনুসারে না হয়, আপনি RecyclerView.LayoutManager
বিমূর্ত ক্লাস প্রসারিত করে নিজের তৈরি করতে পারেন।
আইটেম অ্যানিমেশন যোগ করুন
যখনই একটি আইটেম পরিবর্তন হয়, RecyclerView
এর চেহারা পরিবর্তন করতে একটি অ্যানিমেটর ব্যবহার করে। এই অ্যানিমেটর এমন একটি বস্তু যা বিমূর্ত RecyclerView.ItemAnimator
ক্লাস প্রসারিত করে। ডিফল্টরূপে, RecyclerView
অ্যানিমেশন প্রদান করতে DefaultItemAnimator
ব্যবহার করে। আপনি যদি কাস্টম অ্যানিমেশন প্রদান করতে চান, আপনি RecyclerView.ItemAnimator
প্রসারিত করে আপনার নিজস্ব অ্যানিমেটর অবজেক্ট সংজ্ঞায়িত করতে পারেন।
তালিকা-আইটেম নির্বাচন সক্ষম করুন
recyclerview-selection
লাইব্রেরি ব্যবহারকারীদের স্পর্শ বা মাউস ইনপুট ব্যবহার করে একটি RecyclerView
তালিকার আইটেম নির্বাচন করতে দেয়। এটি আপনাকে একটি নির্বাচিত আইটেমের ভিজ্যুয়াল উপস্থাপনার উপর নিয়ন্ত্রণ বজায় রাখতে দেয়। আপনি নির্বাচন আচরণ নিয়ন্ত্রণকারী নীতিগুলির উপর নিয়ন্ত্রণও রাখতে পারেন, যেমন কোন আইটেমগুলি নির্বাচনের জন্য যোগ্য এবং কতগুলি আইটেম নির্বাচন করা যেতে পারে।
একটি RecyclerView
উদাহরণে নির্বাচন সমর্থন যোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- কোন নির্বাচন কী ধরনের ব্যবহার করতে হবে তা নির্ধারণ করুন, তারপর একটি
ItemKeyProvider
তৈরি করুন।আপনি নির্বাচিত আইটেম সনাক্ত করতে ব্যবহার করতে পারেন তিনটি মূল প্রকার আছে:
-
Parcelable
এবং এর সাবক্লাস, যেমনUri
-
String
-
Long
নির্বাচন-কী প্রকার সম্পর্কে বিস্তারিত তথ্যের জন্য,
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
দেখুন।
নিম্নলিখিত উদাহরণ দেখায় কিভাবে এই টুকরা একসাথে রাখা:
কোটলিন
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
সরবরাহ করতে হবে যা আপনি SelectionTracker.Builder
থেকে RecyclerView
আরম্ভ করতে ব্যবহার করেন। এই কারণে, আপনি SelectionTracker
ইন্সট্যান্স তৈরি করার পরে, এটি আপনার RecyclerView.Adapter
এ ইনজেক্ট করুন। অন্যথায়, আপনি onBindViewHolder()
পদ্ধতি থেকে একটি আইটেমের নির্বাচিত স্থিতি পরীক্ষা করতে পারবেন না।
অ্যাক্টিভিটি লাইফসাইকেল ইভেন্ট জুড়ে নির্বাচনের অবস্থা সংরক্ষণ করতে, আপনার অ্যাপটিকে অবশ্যই অ্যাক্টিভিটির onSaveInstanceState()
এবং onRestoreInstanceState()
পদ্ধতিগুলি থেকে নির্বাচন ট্র্যাকারের onSaveInstanceState()
এবং onRestoreInstanceState()
পদ্ধতিতে কল করতে হবে। আপনার অ্যাপটিকে অবশ্যই SelectionTracker.Builder
কনস্ট্রাক্টরকে একটি অনন্য নির্বাচন আইডি সরবরাহ করতে হবে। এই আইডিটি প্রয়োজন কারণ একটি কার্যকলাপ বা একটি খণ্ডের একাধিক স্বতন্ত্র, নির্বাচনযোগ্য তালিকা থাকতে পারে, যার সবকটি তাদের সংরক্ষিত অবস্থায় টিকে থাকতে হবে।
অতিরিক্ত সম্পদ
অতিরিক্ত তথ্যের জন্য নিম্নলিখিত রেফারেন্স দেখুন.
- সূর্যমুখী ডেমো অ্যাপ , যা
RecyclerView
ব্যবহার করে। - একটি স্ক্রোলযোগ্য তালিকা কোডল্যাব প্রদর্শন করতে RecyclerView ব্যবহার করুন ।
- অ্যান্ড্রয়েড কোটলিন ফান্ডামেন্টালস: রিসাইক্লারভিউ ফান্ডামেন্টাল কোডল্যাব।