একটি গতিশীল তালিকা কাস্টমাইজ করুন অ্যান্ড্রয়েড জেটপ্যাকের অংশ।

রচনা পদ্ধতিটি চেষ্টা করে দেখুন
জেটপ্যাক কম্পোজ হল অ্যান্ড্রয়েডের জন্য প্রস্তাবিত UI টুলকিট। কম্পোজে লেআউটের সাথে কীভাবে কাজ করবেন তা শিখুন।

আপনার নির্দিষ্ট চাহিদা পূরণের জন্য আপনি RecyclerView অবজেক্টগুলিকে কাস্টমাইজ করতে পারেন। Create dynamic lists with 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 ইনস্ট্যান্সে নির্বাচন সমর্থন যোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. কোন সিলেকশন কী টাইপ ব্যবহার করবেন তা নির্ধারণ করুন, তারপর একটি ItemKeyProvider তৈরি করুন।

    নির্বাচিত আইটেমগুলি সনাক্ত করতে আপনি তিনটি মূল প্রকার ব্যবহার করতে পারেন:

    সিলেকশন-কী প্রকার সম্পর্কে বিস্তারিত তথ্যের জন্য, SelectionTracker.Builder দেখুন।

  2. ItemDetailsLookup বাস্তবায়ন করুন।
  3. ItemDetailsLookup নির্বাচন লাইব্রেরিকে MotionEvent প্রদত্ত RecyclerView আইটেম সম্পর্কে তথ্য অ্যাক্সেস করতে দেয়। এটি কার্যকরভাবে ItemDetails ইনস্ট্যান্সের জন্য একটি কারখানা যা RecyclerView.ViewHolder ইনস্ট্যান্স দ্বারা ব্যাক আপ করা হয় বা সেখান থেকে বের করা হয়।

  4. ব্যবহারকারী যদি তাদের নির্বাচন করে বা অনির্বাচিত করে, তাহলে RecyclerView আইটেম View অবজেক্ট আপডেট করুন।

    নির্বাচন লাইব্রেরি নির্বাচিত আইটেমগুলির জন্য কোনও ডিফল্ট ভিজ্যুয়াল ডেকোরেশন প্রদান করে না। onBindViewHolder() প্রয়োগ করার সময় এটি প্রদান করুন। আমরা নিম্নলিখিত পদ্ধতিটি সুপারিশ করি:

    • onBindViewHolder() তে, View অবজেক্টে setActivated()setSelected() নয় — কল করুন true অথবা false দিয়ে, আইটেমটি নির্বাচিত কিনা তার উপর নির্ভর করে।
    • সক্রিয় অবস্থা উপস্থাপনের জন্য ভিউয়ের স্টাইলিং আপডেট করুন। স্টাইলিং কনফিগার করার জন্য আমরা একটি রঙের অবস্থা তালিকার রিসোর্স ব্যবহার করার পরামর্শ দিচ্ছি।
  5. নির্বাচনের উপর কোনও ক্রিয়া সম্পাদনের জন্য ব্যবহারকারীকে সরঞ্জাম সরবরাহ করতে ActionMode ব্যবহার করুন।
  6. একটি SelectionTracker.SelectionObserver নিবন্ধন করুন যাতে আপনি যখন কোনও নির্বাচন পরিবর্তন করেন তখন তা জানতে পারেন। যখন কোনও নির্বাচন প্রথম তৈরি করা হয়, তখন ব্যবহারকারীর কাছে এটি উপস্থাপন করতে এবং নির্বাচন-নির্দিষ্ট ক্রিয়াগুলি প্রদান করতে ActionMode শুরু করুন। উদাহরণস্বরূপ, আপনি ActionMode বারে একটি মুছে ফেলার বোতাম যুক্ত করতে পারেন এবং নির্বাচনটি সাফ করার জন্য বারের পিছনের তীরটি সংযুক্ত করতে পারেন। যখন নির্বাচনটি খালি হয়ে যায় - যদি ব্যবহারকারী শেষবার নির্বাচনটি সাফ করে - তখন অ্যাকশন মোডটি বন্ধ করুন।

  7. যেকোনো ব্যাখ্যা করা গৌণ ক্রিয়া সম্পাদন করুন।
  8. ইভেন্ট প্রসেসিং পাইপলাইনের শেষে, লাইব্রেরি নির্ধারণ করতে পারে যে ব্যবহারকারী কোনও আইটেম সক্রিয় করার চেষ্টা করছেন, এটিতে ট্যাপ করে, অথবা কোনও আইটেম বা নির্বাচিত আইটেমের সেট টেনে আনার চেষ্টা করছেন। উপযুক্ত শ্রোতা নিবন্ধন করে এই ব্যাখ্যাগুলির প্রতিক্রিয়া জানান। আরও তথ্যের জন্য, SelectionTracker.Builder দেখুন।

  9. SelectionTracker.Builder দিয়ে সবকিছু একত্রিত করুন।
  10. নিচের উদাহরণটি দেখায় কিভাবে এই অংশগুলিকে একসাথে রাখা যায়:

    কোটলিন

        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 ইনস্ট্যান্স তৈরি করতে, আপনার অ্যাপটিকে অবশ্যই SelectionTracker.BuilderRecyclerView ইনিশিয়ালাইজ করার জন্য ব্যবহৃত RecyclerView.Adapter একই রকম সরবরাহ করতে হবে। এই কারণে, SelectionTracker ইনস্ট্যান্স তৈরি করার পরে, এটি আপনার RecyclerView.Adapter এ ইনজেক্ট করুন। অন্যথায়, আপনি onBindViewHolder() পদ্ধতি থেকে কোনও আইটেমের নির্বাচিত অবস্থা পরীক্ষা করতে পারবেন না।

  11. কার্যকলাপের জীবনচক্রের ইভেন্টগুলিতে নির্বাচন অন্তর্ভুক্ত করুন।
  12. অ্যাক্টিভিটি লাইফসাইকেল ইভেন্ট জুড়ে সিলেকশন স্টেট সংরক্ষণ করার জন্য, আপনার অ্যাপকে অ্যাক্টিভিটির onSaveInstanceState() এবং onRestoreInstanceState() পদ্ধতি থেকে যথাক্রমে সিলেকশন ট্র্যাকারের onSaveInstanceState() এবং onRestoreInstanceState() ) পদ্ধতিগুলি কল করতে হবে। আপনার অ্যাপটিকে SelectionTracker.Builder কনস্ট্রাক্টরকে একটি অনন্য সিলেকশন আইডিও সরবরাহ করতে হবে। এই আইডিটি প্রয়োজন কারণ একটি অ্যাক্টিভিটি বা একটি ফ্র্যাগমেন্টে একাধিক স্বতন্ত্র, নির্বাচনযোগ্য তালিকা থাকতে পারে, যার সবকটি তাদের সংরক্ষিত অবস্থায় বজায় রাখতে হবে।

অতিরিক্ত সম্পদ

অতিরিক্ত তথ্যের জন্য নিম্নলিখিত তথ্যসূত্রগুলি দেখুন।