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

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

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

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

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

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

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

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

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

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

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

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

অতিরিক্ত তথ্যের জন্য নিম্নলিখিত রেফারেন্স দেখুন.