অ্যান্ড্রয়েড পুনর্ব্যবহারযোগ্য ভিউ হোল্ডারের সাথে তালিকা ভিউ


148

আমি সম্প্রতি অ্যান্ড্রয়েড জুড়ে এসেছি RecyclerViewযা অ্যান্ড্রয়েড 5.0 দিয়ে প্রকাশিত হয়েছিল এবং দেখে মনে হচ্ছে RecyclerViewএটি কেবলমাত্র একটি ListViewএনপ্যাপুলেটেড traditional তিহ্যবাহী যা এতে ভিউহোল্ডার প্যাটার্নটিতে অন্তর্ভুক্ত রয়েছে, যা প্রতি একক সময় তৈরির পরিবর্তে ভিউটির পুনরায় ব্যবহারকে উত্সাহ দেয়।

ব্যবহারের অন্যান্য সুবিধা কী কী RecyclerView? পারফরম্যান্সের ক্ষেত্রে যদি উভয়েরই একই প্রভাব থাকে তবে কেন কেউ রিসাইক্লারভিউকে পছন্দ করবেন?

সম্পাদন করা

আমি দেখতে পেয়েছি যে লোকেরা অনুরূপ প্রশ্ন জিজ্ঞাসা করেছে এবং উত্তরগুলি চূড়ান্ত নয়, তাদের এখানে রেকর্ড রক্ষার জন্য যুক্ত করেছে।

পুনর্ব্যবহারযোগ্য বনাম তালিকা দর্শন

আমাদের তালিকাগুলি প্রতিস্থাপনের জন্য পুনর্ব্যবহারযোগ্য ব্যবহার করা উচিত?

কেন রিসাইক্লারভিউতে আইটেমিক্লিকলিস্টার () নেই? এবং কীভাবে রিসাইক্লারভিউ তালিকাভুক্তির থেকে পৃথক?


4
কারণ এটি RecyclerViewআরও দ্রুততর এবং আরও উন্নততর API এর সাথে বহুমুখী। আইটেমগুলি সংযোজন বা সরানোর মতো বিষয়গুলি RecyclerViewআপনাকে কিছু না করেই ইতিমধ্যে প্রয়োগ করা হয়েছে । এটি নিয়ে কোনও প্রশ্নই আসে না, আপনার ListViewট্র্যাশের ক্যানের মধ্যে ফেলে দিন , RecyclerViewশোটি চুরি করতে এখানে এসেছেন।
জাভার কাপেলার

4
আপনি একটি পুনর্ব্যবহারযোগ্য ভিউয়ের সাথে একটি লেআউট ম্যানেজারকে সংযুক্ত করতে পারেন, সুতরাং তারা উল্লম্বভাবে স্ক্রোলিং তালিকার মধ্যে সীমাবদ্ধ নয়। এটি বেশ শক্তিশালী অতিরিক্ত কার্যকারিতা।
অ্যালান

@ অ্যালান - "উল্লম্বভাবে স্ক্রোলিং তালিকার মধ্যে সীমাবদ্ধ নয়" বলতে কী বোঝ? আপনি কি বলছেন যে রিসাইকেল ভিউ গ্রিডভিউ এবং তালিকাগুলির জন্যও "স্থানধারক" হিসাবে কাজ করতে পারে?
মোশতাক জামিল

@ জাভারক্যাপেলার - আপনি যদি দুজনের মধ্যে পার্থক্যের তালিকা তৈরি করে কোনও মন্তব্যের পরিবর্তে প্রশ্নের উত্তর দিতে পারতেন তবে দুর্দান্ত লাগবে, যাতে এটি আমাকে এবং ভবিষ্যতে অন্যদের যারা একই জিনিস নিয়ে ভাবতে পারে তাদের সহায়তা করতে পারে?
মোশতাক জামিল

@ অ্যালান - আপনি কী বোঝাতে চেয়েছেন সে সম্পর্কে কিছুটা বিশদ বিবরণ দিতে এবং মন্তব্যের পরিবর্তে প্রশ্নের উত্তর দিতে পারবেন? সময় দেওয়ার জন্য ধন্যবাদ
মুশতাক জামিল

উত্তর:


289

অ্যান্ড্রয়েড ললিপপ এর আবির্ভাবের সাথে সাথে রিসাইক্লারভিউ আনুষ্ঠানিকভাবে তার পথ তৈরি করে। রিসাইক্লারউভিউ অনেক বেশি শক্তিশালী, নমনীয় এবং তালিকাভিউয়ের চেয়ে বড় বর্ধনশীল । আমি আপনাকে এটিতে একটি বিশদ অন্তর্দৃষ্টি দেওয়ার চেষ্টা করব।

1) ভিউহোল্ডার প্যাটার্ন

একটি তালিকাভিউতে, ভিউহোল্ডার প্যাটার্নটি ব্যবহার করার পরামর্শ দেওয়া হয়েছিল তবে এটি কখনও বাধ্যতা ছিল না। রিসাইক্লারভিউয়ের ক্ষেত্রে, এটি পুনর্ব্যবহারযোগ্য ভিউ.ভিউহোল্ডার শ্রেণিটি ব্যবহার করা বাধ্যতামূলক । এটি তালিকাভিউ এবং রিসাইক্লারভিউয়ের মধ্যে অন্যতম প্রধান পার্থক্য।

এটি রিসাইক্লিউউতে জিনিসগুলিকে কিছুটা জটিল করে তোলে তবে আমরা তালিকাভিউতে যে সমস্যার মুখোমুখি হয়েছিলাম তা দক্ষতার সাথে সমাধান করা হয়।

2) লেআউটম্যানেজার

এটি রিসাইকেলার ভিউতে আনা আরও একটি বৃহত বর্ধন। একটি তালিকাভিউতে, কেবলমাত্র এক ধরণের দর্শনই হ'ল উল্লম্ব তালিকাভিউ। এমনকি অনুভূমিক তালিকাভিউ বাস্তবায়নের কোনও সরকারী উপায় নেই।

এখন একটি পুনর্ব্যবহারযোগ্য ভিউ ব্যবহার করে আমাদের একটি থাকতে পারে

i) লিনিয়ারলআউটম্যানেজার - যা উভয় উল্লম্ব এবং অনুভূমিক তালিকা সমর্থন করে,

ii) স্তিমিতলয়আউটআউট ম্যানেজার - এটি স্তিমিত তালিকার মতো পিন্টেস্ট সমর্থন করে,

iii) গ্রিডলআউটম্যানেজার - যা গ্যালারী অ্যাপ্লিকেশনগুলিতে যেমন দেখা যায় তেমন গ্রিডগুলি প্রদর্শন করে।

এবং সর্বোত্তম বিষয়টি হ'ল আমরা যা চাই তার সবগুলি গতিশীলভাবে করতে পারি।

3) আইটেম অ্যানিম্যাটর

লিস্টভিউগুলিতে ভাল অ্যানিমেশনগুলির সমর্থনের অভাব রয়েছে তবে রিসাইক্লারভিউ এতে একেবারে নতুন মাত্রা এনেছে। রিসাইক্লারভিউ.আইটেমএনিমেটার ক্লাস ব্যবহার করে, ভিউগুলিকে অ্যানিমেট করা এত সহজ এবং স্বজ্ঞাত হয়ে উঠেছে।

4) আইটেম সজ্জা

লিস্টভিউগুলির ক্ষেত্রে, গতিশীলভাবে সীমানা বা বিভাজক যুক্ত করার মতো আইটেমগুলি সজ্জিত করা কখনই সহজ ছিল না। তবে রিসাইক্লারভিউয়ের ক্ষেত্রে, পুনর্ব্যবহারযোগ্য ভিউ.আইটেমডেকোরেটর শ্রেণি বিকাশকারীদের বিশাল নিয়ন্ত্রণ দেয় তবে জিনিসগুলিকে কিছুটা সময় সাপেক্ষ ও জটিল করে তোলে।

5) অনআইটম টাচলিস্টনার

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

সহজ কথায়, রিসাইক্লার ভিউ তালিকাভুজের তুলনায় অনেক বেশি কাস্টমাইজযোগ্য এবং এর বিকাশকারীকে প্রচুর নিয়ন্ত্রণ এবং শক্তি দেয়।


34
ভাল উত্তর. কয়েকটি অতিরিক্ত বিশাল প্লাস: রিসাইক্লারভিউ দৃশ্যমান এন্ট্রিগুলির ঠিক সামনে এবং পিছনে দৃশ্য প্রস্তুত করে, আপনি যদি পটভূমিতে বিটম্যাপ আনছেন তবে দুর্দান্ত। পারফরম্যান্স নাটকীয়ভাবে দ্রুততর হয়, বিশেষত যদি আপনি রিসাইক্লারভিউ.সেটহাসফিক্সডসাইজ ব্যবহার করেন। পুরানো তালিকাগুলি এই ভিত্তিতে ভিত্তি করে তৈরি করা হয়েছে যে তালিকায় প্রবেশের আকারটিকে পূর্বনির্ধারণ বা ক্যাশে করার কোনও উপায় নেই, যা স্ক্রোলিং এবং লেআউট সম্পাদন করার সময় উন্মাদ জটিলতা সৃষ্টি করে। এর অভ্যস্ত হয়ে উঠতে কিছুটা সময় নেয় তবে একবার করে ফেললে আপনি আর ফিরে যাবেন না।
রবিন ডেভিস

@ রবিনড্যাভিস দুর্দান্ত পয়েন্ট জানানোর জন্য ধন্যবাদ। তবে আইটেমগুলির আকারগুলি পৃথক হলে তা বোঝা যাবে না।
অরিত্র রায়

@ অরিত্ররাহ রিসাইক্লারভিউ কেবল ললিপপ বা এপিআই 14+ (অ্যান্ড্রয়েড 4+) তে সমর্থন করে? .... আমি যেমনটি পড়েছি "ললিপপের পরে: বেশিরভাগ জায়গায়
অনিমেষ মঙ্গলা

2
আরে, অরিত্র, তালিকার সাথে তুলনা করার সময়, যদি তালিকাভিউ ভিউহোল্ডার প্যাটার্নটিও ব্যবহার করে তবে কোনটি আরও দক্ষতার সাথে কাজ করে? Fps বা অন্যান্য কিছু অনুরূপ মানদণ্ড? thx using ব্যবহার করার সময়, রিসিলারটি আরও ভাল
দেখাবে

@ আরএক্সআরড: রবিনের মন্তব্য দেখুন, তিনি পুনরায় ব্যবহারকারীর ভিত্তিতে ভিউ হোল্ডার প্যাটার্নের সাথে পুনর্ব্যবহারযোগ্য ভিএস তালিকাভিত্তিকে আলাদা করেছেন।
পরাগ কদম

10

ব্যবহারের অন্যান্য প্লাস RecycleViewহ'ল অ্যানিমেশন, এটি কোডের দুটি লাইনে করা যেতে পারে

RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
        recyclerView.setItemAnimator(itemAnimator);

তবে উইজেটটি এখনও কাঁচা, যেমন আপনি শিরোনাম এবং পাদচরণ তৈরি করতে পারবেন না ।


5
এবং আপনি কখনই সেই অর্থে শিরোনাম এবং পাদচরণ তৈরি করতে সক্ষম হবেন না। আপনার অ্যাডাপ্টারে এগুলি কেবলমাত্র অন্য ধরণের ধরণের। তালিকা দর্শন আপনার অ্যাডাপ্টারে inেকে দেয় HeaderViewListAdapterএবং পটভূমিতে শিরোনাম সমর্থন যুক্ত করে। RecyclerViewআপনি নিয়ন্ত্রণে এক সঙ্গে ।
ইউজেন পেচানেক

রিসাইক্লারভিউ ডিফল্টরূপে একটি ডিফল্ট আইটেম অ্যানিমেটার ব্যবহার করে। তাহলে আপনি এই কোডটি কেন ব্যবহার করলেন?
অথিরা রেড্ডি

9

ঠিক আছে খনক তাই সামান্য বিট এবং আমি বিল ফিলিপস থেকে এই রত্ন পাওয়া নিবন্ধ উপরRecycleView

রিসাইক্লার ভিউ তালিকাগুলির চেয়ে আরও বেশি কিছু করতে পারে তবে তালিকার ভিউয়ের তুলনায় রিসাইক্লারভিউ ক্লাসে নিজেই কম দায়িত্ব রয়েছে। বাক্সের বাইরে, রিসাইক্লার ভিউ এটি করে না:

  • পর্দায় আইটেমগুলি অবস্থান করুন
  • এনিমেট দর্শন
  • স্ক্রোলিং বাদে কোনও স্পর্শ ইভেন্ট হ্যান্ডেল করুন

এই সমস্ত স্টাফ তালিকাভুতে বেকড ছিল, তবে রিসাইক্লারভিউ পরিবর্তে এই কাজগুলি করতে সহযোগী ক্লাস ব্যবহার করে।

আপনার তৈরি করা ভিউহোল্ডারগুলিও বিফায়ার। তারা সাবক্লাস RecyclerView.ViewHolder, যার একগুচ্ছ পদ্ধতি RecyclerView ব্যবহার করে। ViewHoldersতারা বর্তমানে কোন পজিশনে আবদ্ধ এবং সেই সাথে কোন আইটেম আইডগুলি জেনে রাখুন (যদি আপনার সেগুলি থাকে)। প্রক্রিয়াটিতে, ViewHolder নিহত হয়েছে। এটি পুরো আইটেম ভিউ ধরে রাখা তালিকার দর্শন হিসাবে কাজ করত এবংViewHolder কেবল এটির সামান্য অংশে ।

এখন, ভিউহোল্ডার ViewHolder.itemView ক্ষেত্রটিতে এটির সমস্তটি ধরে রেখেছে , যা আপনার জন্য ভিউহোল্ডারের নির্মাতাকে দেওয়া হয়েছে।


4

বিল ফিলিপের নিবন্ধ থেকে আরও (এটি পড়ুন!) তবে আমি নিম্নলিখিতটি উল্লেখ করা গুরুত্বপূর্ণ বলে মনে করি was

তালিকাভিউতে ক্লিক ইভেন্টগুলি কীভাবে পরিচালনা করতে হবে সে সম্পর্কে কিছুটা অস্পষ্টতা ছিল: স্বতন্ত্র মতামতগুলি কি এই ইভেন্টগুলি পরিচালনা করতে পারে, বা তালিকাভিউগুলিকে অনআইটেমিক্লিকলিস্টারের মাধ্যমে পরিচালনা করা উচিত? রিসাইক্লার ভিউতে, যদিও ভিউহোল্ডার একটি সারি-স্তরের নিয়ামক বস্তু হিসাবে কাজ করার জন্য একটি স্পষ্ট অবস্থানে রয়েছে যা এই ধরণের বিবরণগুলি পরিচালনা করে।

আমরা এর আগে দেখেছি যে লেআউটম্যানেজার পজিশনিং ভিউগুলি পরিচালনা করে এবং আইটেমএনিমেটর তাদের অ্যানিমেটেড পরিচালনা করে। ভিউহোল্ডার হ'ল শেষ টুকরা: এটি কোনও নির্দিষ্ট আইটেমটিতে ঘটে যাওয়া কোনও ইভেন্ট হ্যান্ডেল করার জন্য দায়বদ্ধ যা রিসাইক্লারভিউ প্রদর্শন করে।


2

আমি ListViewগ্লাইড ইমেজ লোডার সহ মেমরির বৃদ্ধি পেয়ে ব্যবহার করেছি। তারপরে আমি এ ListViewদিয়ে প্রতিস্থাপন করেছি RecyclerView। এটি কোডিংয়ে কেবল আরও কঠিন নয়, এটি একটির চেয়ে আরও বেশি মেমরির ব্যবহারের দিকে নিয়ে যায় ListView। কমপক্ষে, আমার প্রকল্পে।

অন্য ক্রিয়াকলাপে আমি একটি জটিল তালিকা ব্যবহার করেছি EditText's। তাদের মধ্যে কিছুতে একটি ইনপুট পদ্ধতি পরিবর্তিত হতে পারে এবং TextWatcherএটি প্রয়োগও করা যেতে পারে। যদি আমি একটি ব্যবহার করি তবে আমি ViewHolderকীভাবে TextWatcherস্ক্রোলিংয়ের সময় একটি প্রতিস্থাপন করতে পারি ? সুতরাং, আমি একটি ListViewছাড়াই একটি ব্যবহার করেছি ViewHolder, এবং এটি কার্যকর হয়।


আমি ভিউহোল্ডার ছাড়াই একটি তালিকাভিউ ব্যবহার করেছি এবং এটি কার্যকর হয়। ভয়ানক ধারণা ... স্ক্রোলিংয়ের সময় আমি কীভাবে একটি পাঠ্য ঘড়ির স্থানটি পরিবর্তন করতে পারি? এটি প্রতিস্থাপন করার দরকার নেই ... কেবল টেক্সটওয়াচারের পুনরায় ব্যবহারের পরে বিভিন্ন পাত্রে ডেটা রাখা উচিত ... এবং এটি সত্যিই সহজ করা যেতে পারে
সেলভিন

@ সেলভিন, আপনার মতামতের জন্য ধন্যবাদ এখন আমি এই প্রকল্পটি সম্পাদনা করতে পারি না। TextWatcherএকটি স্ক্রিনে বেশ কয়েকটি এস ছিল । সম্ভবত আপনি ঠিক বলেছেন, কিন্তু আমি এটি পরীক্ষা করতে পারি না।
কুলমাইন্ড

1

উপরে / নিচে স্ক্রোল করার সময় কক্ষগুলি পুনরায় ব্যবহার করুন - তালিকার ভিউ অ্যাডাপ্টারে ভিউ হোল্ডার বাস্তবায়নের মাধ্যমে এটি সম্ভব, তবে এটি একটি alচ্ছিক জিনিস ছিল, যখন রিসাইক্ল ভিউতে এটি অ্যাডাপ্টার লেখার ডিফল্ট উপায়।

এর ধারক থেকে তালিকাটি ডিকুপ্লস করে - যাতে আপনি লেআউট ম্যানেজারটি সেট করে বিভিন্ন পাত্রে (লিনিয়ারলআউট, গ্রিডলাউট) রানের সময় তালিকার আইটেমগুলি সহজেই রাখতে পারেন।

উদাহরণ:

mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
  • সাধারণ তালিকার ক্রিয়াকে অ্যানিমেট করে।

  • অ্যানিমেশনগুলি decoupled এবং এঁকে দেওয়া হয় ItemAnimator

রিসাইক্লার ভিউ সম্পর্কে আরও রয়েছে, তবে আমি মনে করি যে এই পয়েন্টগুলি প্রধান।

LayoutManager

i) লিনিয়ারলআউটম্যানেজার - যা উভয় উল্লম্ব এবং অনুভূমিক তালিকা সমর্থন করে,

ii) স্তিমিতলয়আউটআউট ম্যানেজার - এটি স্তিমিত তালিকার মতো পিন্টেস্ট সমর্থন করে,

iii) গ্রিডলআউটম্যানেজার - যা গ্যালারী অ্যাপ্লিকেশনগুলিতে যেমন দেখা যায় তেমন গ্রিডগুলি প্রদর্শন করে।

এবং সর্বোত্তম বিষয়টি হ'ল আমরা যা চাই তার সবগুলি গতিশীলভাবে করতে পারি।


1

1. ধারক দেখুন

লিস্টভিউ-এ, ভিউ হোল্ডারদের সংজ্ঞা দেওয়া হ'ল দর্শনগুলির জন্য রেফারেন্স রাখার জন্য একটি প্রস্তাবিত পদ্ধতি ছিল। তবে এটি কোনও বাধ্যবাধকতা ছিল না। যদিও এটি না করে, তালিকাভিউ বাসি ডেটা দেখায়। ভিউ হোল্ডারগুলি ব্যবহার না করার আরও একটি বড় অসুবিধা প্রতিবার আইডির দ্বারা দেখা সন্ধানের ভারী অপারেশন হতে পারে। যার ফলস্বরূপ পিছিয়ে তালিকার ভিউগুলি।

এই সমস্যাটি রিসাইক্লার ভিউ.ভিউহোল্ডার শ্রেণীর ব্যবহারের মাধ্যমে রিসেলারভিউতে সমাধান করা হয়েছে। এটি রিসাইক্লারভিউ এবং লিস্টভিউয়ের অন্যতম প্রধান পার্থক্য। একটি পুনর্ব্যবহারযোগ্য বাস্তবায়ন করার সময় এই শ্রেণিটি ভিউহোল্ডার অবজেক্টটি সংজ্ঞায়িত করতে ব্যবহৃত হয় যা অ্যাডাপ্টার দ্বারা ভিউহোল্ডারকে একটি অবস্থানের সাথে আবদ্ধ করতে ব্যবহৃত হয়। এখানে অন্য একটি বিষয় লক্ষণীয়, তা হ'ল পুনর্ব্যবহারযোগ্য ভিউয়ের জন্য অ্যাডাপ্টারটি প্রয়োগ করার সময়, ভিউহোল্ডার সরবরাহ করা বাধ্যতামূলক। এটি বাস্তবায়নটিকে কিছুটা জটিল করে তোলে তবে তালিকার ভিউয়ের মধ্যে থাকা সমস্যাগুলি সমাধান করে।

2. লেআউট ম্যানেজার

তালিকাগুলির কথা বললে, কেবলমাত্র এক ধরণের তালিকাভিউ পাওয়া যায় যেমন উল্লম্ব তালিকাভিউ। অনুভূমিক স্ক্রোল সহ আপনি একটি তালিকাভিউ বাস্তবায়ন করতে পারবেন না। আমি জানি যে অনুভূমিক স্ক্রোলটি প্রয়োগ করার উপায় রয়েছে তবে আমার বিশ্বাস করুন এটি সেভাবে কাজ করার জন্য ডিজাইন করা হয়নি।

তবে এখন যখন আমরা অ্যান্ড্রয়েড রিসাইক্লারভিউ বনাম তালিকার ভিউতে দেখি, আমাদের পাশাপাশি অনুভূমিক সংগ্রহের জন্য সমর্থন রয়েছে। বাস্তবে এটি একাধিক ধরণের তালিকা সমর্থন করে। একাধিক ধরণের তালিকাগুলি সমর্থন করার জন্য এটি রিসাইক্লারভিউ.লায়আউটম্যানেজার শ্রেণি ব্যবহার করে। এটি লিস্টভিউয়ের কাছে নেই এমন নতুন কিছু। রিসাইক্লারভিউ তিন ধরণের পূর্বনির্ধারিত লেআউট ম্যানেজারকে সমর্থন করে:

লিনিয়ারলআউটম্যানেজার - রিসাইক্লিউউয়ের ক্ষেত্রে এটি সর্বাধিক ব্যবহৃত লেআউট ম্যানেজার। এর মাধ্যমে আমরা উভয় অনুভূমিক এবং উল্লম্ব স্ক্রোল তালিকা তৈরি করতে পারি। স্তম্ভিতগ্রিডগ্রাউট ম্যানেজার - এই লেআউট ম্যানেজারের মাধ্যমে আমরা স্তব্ধ স্তরের তালিকা তৈরি করতে পারি। ঠিক পিন্টারেস্ট স্ক্রিনের মতো। গ্রিডলাউটম্যানেজার– এই লেআউট ম্যানেজারটি কোনও চিত্র গ্যালারির মতো গ্রিড প্রদর্শন করতে ব্যবহার করা যেতে পারে।

3. আইটেম অ্যানিমেটার

একটি তালিকার অ্যানিমেশনগুলি সম্পূর্ণ নতুন মাত্রা, যার অন্তহীন সম্ভাবনা রয়েছে। একটি লিস্টভিউতে, যেমন কোনও বিশেষ বিধি নেই যার মাধ্যমে কেউ আইটেম সঞ্চারিত করতে, সংযোজন করতে বা মুছতে পারে। এর পরিবর্তে পরে অ্যান্ড্রয়েডের বিবর্তিত হিসাবে ভিউপ্রোপার্টি অ্যানিম্যাটরটি গুগলের চেট হাজে তালিকাভুক্তিতে অ্যানিমেশনগুলির জন্য এই ভিডিও টিউটোরিয়ালে প্রস্তাব করেছিলেন was

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

4. অ্যাডাপ্টার

লিস্টভিউ অ্যাডাপ্টারগুলি প্রয়োগ করা সহজ ছিল। তাদের একটি প্রধান পদ্ধতি getView ছিল যেখানে সমস্ত যাদু ঘটত। যেখানে মতামত একটি অবস্থানের সাথে আবদ্ধ ছিল। এছাড়াও তাদের কাছে একটি আকর্ষণীয় পদ্ধতিতে রেজিস্ট্রার ডেটাসেটঅবার্সার থাকত যেখানে অ্যাডাপ্টারে একজন পর্যবেক্ষককে ঠিক সেট করতে পারে। এই বৈশিষ্ট্যটি রিসাইক্লিউউতেও উপস্থিত রয়েছে তবে এটির জন্য রিসাইক্লারভিউ.এডাপ্টারডাটাঅবার্সার ক্লাসটি ব্যবহৃত হয়। তবে তালিকাভিউর পক্ষে কথাটি হ'ল এটি অ্যাডাপ্টারের তিনটি ডিফল্ট বাস্তবায়ন সমর্থন করে:

অ্যারেএডাপ্টার কার্সর অ্যাডাপ্টার সিম্পল কার্সার অ্যাডাপ্টার যেখানে রিসাইক্লারভিউ অ্যাডাপ্টারের সাথে ডিবি কার্সার এবং অ্যারেলিস্টের জন্য অন্তর্নির্মিত লিস্টভিউ অ্যাডাপ্টারগুলির সমস্ত কার্যকারিতা রয়েছে। রিসাইক্লারভিউ.এডাপ্টারে এখন পর্যন্ত আমাদের অ্যাডাপ্টারে ডেটা সরবরাহের জন্য একটি কাস্টম বাস্তবায়ন করতে হবে। যেমন একটি বেসএডাপ্টার তালিকাগুলির জন্য করে। যদিও আপনি রিসাইক্লিউউ অ্যাডাপ্টার বাস্তবায়ন সম্পর্কে আরও জানতে চান তবে দয়া করে অ্যান্ড্রয়েড রিসাইক্লারভিউ উদাহরণটি দেখুন।

5. তথ্য পরিবর্তন পরিবর্তন

তালিকাভিউয়ের সাথে কাজ করার সময়, যদি ডেটা সেটটি পরিবর্তন করা হয় তবে ডেটা রিফ্রেশ করার জন্য আপনাকে অন্তর্নিহিত অ্যাডাপ্টারের notifyDataSetChanged পদ্ধতিতে কল করতে হবে। অথবা আপনি স্বয়ংক্রিয়ভাবে notifyDataSetChanged পদ্ধতিতে কল করতে ইচ্ছুক হলে setNotifyOnChange পদ্ধতিটি সেট করুন। তবে উভয় ক্ষেত্রেই এই তালিকাটি খুব ভারী। মূলত এটি তালিকার দৃষ্টিভঙ্গিগুলি সতেজ করে।

তবে একটি পুনর্ব্যবহারযোগ্য অ্যাডাপ্টারের বিপরীতে, যদি কোনও একক আইটেম বা বিস্তৃত আইটেম পরিবর্তিত হয়, সেই অনুসারে পরিবর্তনটি অবহিত করার জন্য বিভিন্ন পদ্ধতি রয়েছে। এগুলি যথাক্রমে notifyItemChanged এবং notifyItemRangeChanged এবং আরও অনেকের মত:

notifyItemInsterted notifyItemMoved notifyItemRangeInsterted notifyItemRangeRemoved এবং অবশ্যই পুরো তালিকাটি রিফ্রেশ করার জন্য মূল পদ্ধতিটি রয়েছে অর্থাৎ notifyDataSetChanged যা বিজ্ঞাপিত করে পুরো ডেটা সেটটি পরিবর্তিত হয়েছে।

6. আইটেম সজ্জা

একটি তালিকাভিউতে কাস্টম বিভাজক প্রদর্শন করতে, সহজেই তালিকাভিউ এক্সএমএলে এই প্যারামিটারগুলি যুক্ত করা যেতে পারে:

এক্সএইচটিএমএল অ্যান্ড্রয়েড: ডিভাইডার = "@ অ্যান্ড্রয়েড: রঙ / স্বচ্ছ" অ্যান্ড্রয়েড: ডিভাইডারহাইট = "5 ডিপি" 1 2 অ্যান্ড্রয়েড: ডিভাইডার = "@ অ্যান্ড্রয়েড: রঙ / স্বচ্ছ" অ্যান্ড্রয়েড: ডিভাইডারহাইট = "5 ডিপি" অ্যান্ড্রয়েড রিক্সিকারভিউ সম্পর্কে আকর্ষণীয় অংশটি হ'ল, এখন পর্যন্ত এটি ডিফল্টরূপে আইটেমগুলির মধ্যে একটি বিভাজক প্রদর্শন করে না। যদিও গুগলের ছেলেরা ইচ্ছাকৃতভাবে কাস্টমাইজেশনের জন্য এগুলি রেখে গেছে। তবে এটি একটি বিকাশকারীদের জন্য প্রচেষ্টাকে প্রচুর পরিমাণে বাড়িয়ে তোলে। আপনি যদি আইটেমগুলির মধ্যে একটি বিভাজক যুক্ত করতে চান, তবে আপনার পুনর্ব্যবহারযোগ্য ভিউ আইটেমডেকারেশন ক্লাস ব্যবহার করে একটি কাস্টম বাস্তবায়ন করতে হবে।

অথবা আপনি সরকারী নমুনা থেকে এই ফাইলটি ব্যবহার করে একটি হ্যাক প্রয়োগ করতে পারেন: DividerItemDecoration.java

On.অনটাইমটচলিস্টনার

ক্লিকগুলি সনাক্তকরণের জন্য, যেমন অ্যাডাপ্টারভিউ.অনআইটেমিক্লিকলিস্টনার ইন্টারফেসের সাহায্যে একটি সাধারণ বাস্তবায়ন ব্যবহৃত তালিকাগুলি।

তবে অন্যদিকে রিসাইক্লারভিউ.অনআইটেমটিউচলিস্টনার ইন্টারফেসটি অ্যান্ড্রয়েড রিসাইক্লারভিউতে স্পর্শ ইভেন্টগুলি সনাক্ত করতে ব্যবহৃত হয়। এটি বাস্তবায়নটিকে কিছুটা জটিল করে তোলে তবে এটি স্পর্শ ইভেন্টগুলিতে বাধা দেওয়ার জন্য বিকাশকারীকে আরও বেশি নিয়ন্ত্রণ দেয়। অফিশিয়াল ডকুমেন্টেশনে বলা হয়েছে, এটি অঙ্গভঙ্গি ম্যানিপুলেশনগুলির জন্য দরকারী হতে পারে কারণ এটি একটি স্পর্শ ইভেন্টটিকে পুনর্ব্যবহারযোগ্য ভিউতে পৌঁছে দেওয়ার আগে বাধা দেয়।


1

রিসাইক্লারভিউ একটি তালিকাভিউ উন্নতি হিসাবে তৈরি করা হয়েছিল, তাই হ্যাঁ, আপনি তালিকাভিউ নিয়ন্ত্রণের সাথে একটি সংযুক্ত তালিকা তৈরি করতে পারেন, তবে পুনর্ব্যবহারযোগ্য ভিউ ব্যবহার করা এটি তত সহজ:

  1. উপরে / নিচে স্ক্রোল করার সময় কক্ষগুলি পুনরায় ব্যবহার : লিস্টভিউ অ্যাডাপ্টারে ভিউ হোল্ডার বাস্তবায়নের মাধ্যমে এটি সম্ভব, তবে এটি একটি alচ্ছিক জিনিস ছিল, যখন রিসাইক্ল ভিউতে এটি অ্যাডাপ্টার লেখার ডিফল্ট উপায়।

  2. এর ধারক থেকে তালিকাটি ডিকুপ্লস করে : যাতে আপনি লেআউটম্যানেজার স্থাপনের সাথে বিভিন্ন পাত্রে (লিনিয়ারলআউট, গ্রিডলাউট) রানের সময় তালিকার আইটেমগুলি সহজেই রাখতে পারেন।

এমআরসিক্র্লারভিউ = (রিসাইক্লারভিউ) সন্ধান ভিউবিআইআইডি (আর.আইডি.মি_রিসাইক্লার_ভিউ); mRecyclerView.setLayoutManager (নতুন লিনিয়ারলআউটআউট ম্যানেজার (এটি)); mRecyclerView.setLayoutManager (নতুন গ্রিডলাউটম্যানেজার (এটি, 2));

  1. সাধারণ তালিকার ক্রিয়াকে অ্যানিমেট করে : অ্যানিমেশনগুলি decoupled এবং আইটেমনিমেটরের কাছে অর্পিত হয়। রিসাইক্লার ভিউ সম্পর্কে আরও রয়েছে, তবে আমি মনে করি যে এই পয়েন্টগুলি প্রধান।

সুতরাং, উপসংহারে বলা যায় যে, "তালিকার ডেটা" পরিচালনা করার জন্য রিসাইক্লিউউইউ একটি আরও নমনীয় নিয়ন্ত্রণ যা উদ্বেগের প্রতিনিধিদের নিদর্শন অনুসরণ করে এবং কেবল একটি কাজ করে - আইটেমগুলি পুনর্ব্যবহার করে।


0

আপনি যদি রিসাইকেলভিউ ব্যবহার করেন তবে প্রথমে আপনাকে সেটআপের জন্য আরও এফফোর্ড লাগবে। সাধারণ আইটেম অনক্লিক, সীমানা, স্পর্শ ইভেন্ট এবং অন্যান্য সাধারণ জিনিস সেটআপ করার জন্য আপনাকে আরও সময় দিতে হবে। তবে শেষ পণ্যটি নিখুঁত হবে।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.