Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android Lollipop
Code

অ্যান্ড্রয়েডে রিসাইকেলভিউ এবং কার্ডভিউ নিয়ে প্রাথমিক শিক্ষা

by
Difficulty:IntermediateLength:LongLanguages:

Bengali (বাংলা) translation by Syeda Nur-E-Royhan (you can also view the original English article)

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

পূর্বশর্তাবলী

আমাদের সাথে তাল মিলিয়ে কাজ করতে আপনাকে অ্যান্ড্রয়েড স্টুডিওর সর্বশেষ ভার্সনটি ব্যবহার করতে হবে। আপনি এটি অ্যান্ড্রয়েড ডেভেলপার ওয়েবসাইটে পাবেন।

১। পুরনো ভার্সনগুলো সাপোর্ট করা

এই টিউটোরিয়ালটি লেখার সময় ২%-এরও কম অ্যান্ড্রয়েড ডিভাইস অ্যান্ড্রয়েড ললিপপ ব্যবহার করে। যাই হোক, v7 Support Library-এর সৌজন্যে আপনি আপনার প্রজেক্টের build.grade ফাইলের dependencies অংশে নিচের লাইনগুলো যোগ করে অ্যান্ড্রয়েডের পুরনো ভার্সন ব্যবহার করে এমন সব ডিভাইসে RecyclerView এবং CardView কৌশলগুলো ব্যবহার করতে পারবেন।

২। CardView তৈরি করা

CardView হচ্ছে একটি ViewGroup। যে কোন ViewGroup-এর মতোই, লেআউট এক্সএমএল ফাইল ব্যবহার করে এটি আপনার Activity বা Fragment-এ যোগ করা যায়।

একটি ফাঁকা CardView তৈরি করতে নিচের ছবিতে যেভাবে দেখানো হয়েছে সেভাবে লেআউট এক্সএমএলে নিচের কোডগুলো যোগ করতে হবে।

আরও বাস্তববাদী উদাহরণ দিতে হলে চলুন একটি LinearLayout তৈরি করে তার ভিতর একটি CardView স্থাপন করি। CardView দিয়ে কোন ব্যক্তিকে বুঝাতে পারে এবং সেখানে নিচের বিষয়গুলো থাকতে পারে।

  • ওই ব্যক্তির নাম প্রদর্শনের জন্য একটি TextView
  • ব্যক্তির বয়স দেখানোর জন্য একটি TextView
  • ব্যক্তির ছবি দেখানোর জন্য একটি ImageView

এক্সএমএল দেখতে অনেকটা এমন হবে:

TextView এবং ImageView-এর ক্ষেত্রগুলো অর্থবোধক ভ্যালুতে সেট করার সাথে সাথে এই এক্সএমএল যদি কোন Activity-এর লেআউট হিসেবে ব্যবহৃত হয় তাহলে অ্যান্ড্রয়েড ডিভাইসে তা এভাবে রেন্ডার করা হবে:

A Stand-alone Card

৩। RecyclerView তৈরি করা

ধাপ ১: একটি লেআউটে এটিকে ডিফাইন করা

RecyclerView-এর উদাহরণ ব্যবহার করা অপেক্ষাকৃতভাবে কিছুটা জটিল। তবে লেআউট এক্সএমএল ফাইলে এটিকে ডিফাইন করা বেশ সহজ। আপনি এটিকে নিচের মতো করে একটি লেআউটে ডিফাইন করতে পারবেন:

আপনার Activity-তে এটির সাথে হ্যান্ডল চালু করতে নিচের খণ্ডচিত্রটি অনুসরণ করুন:

আপনি যদি নিশ্চিত হন যে RecyclerView-এর আকার পরিবর্তিত হবে না তাহলে দক্ষতা বৃদ্ধির জন্য আপনি নিম্নোক্ত বিষয়গুলো যোগ করতে পারেন:

ধাপ ২: LayoutManager ব্যবহার করা

RecyclerView-তে এর আইটেমগুলো স্থাপন করতে একটি LayoutManager প্রয়োজন হয় যা ListView-তে অপ্রয়োজনীয়। RecyclerView.LayoutManager ক্লাস সম্প্রসারিত করে আপনি আপনার নিজস্ব LayoutManager ডিফাইন করতে পারেন। যাই হোক, বেশিরভাগ ক্ষেত্রে, আপনি আগে থেকেই ডিফাইন করা LayoutManager সাবক্লাসের যে কোন একটি ব্যবহার করতে পারেন:

  • LinearLayoutManager
  • GridLayoutManager
  • StaggeredGridLayoutManager

এই টিউটোরিয়ালে আমি একটি LinearLayoutManager ব্যবহার করবো। এই LayoutManager সাবক্লাসটি আপনার RecyclerView-কে ListView-এর মতো দেখাবে।

ধাপ ৩: ডাটা ডিফাইন করা

ঠিক Listview-এর মতোই, ডাটায় প্রবেশ করার জন্য RecyclerView-এর একটি অ্যাডাপ্টার দরকার হয়। তবে অ্যাডাপ্টার তৈরি করার আগে চলুন কাজে লাগানোর মতো ডাটা তৈরি করি। একজন ব্যক্তিকে প্রতিনিধিত্ব করার জন্য একটি সাধারণ ক্লাস তৈরি করুন এবং Person অবজেক্টের List প্রস্তুত করার জন্য একটি প্রক্রিয়া লিখে ফেলুন:

ধাপ : অ্যাডাপ্টার তৈরি করা

RecyclerView ব্যবহার করতে পারে এমন অ্যাডাপ্টার তৈরি করতে হলে আপনাকে অবশ্যই RecyclerView.Adapter সম্প্রসারিত করতে হবে। এই অ্যাডাপ্টারটি ভিউ হোল্ডার ডিজাইন প্যাটার্ন অনুসরণ করে। এর মানে হচ্ছে RecyclerView.ViewHolder সম্প্রসারিত করে এমন কাস্টম ক্লাস ডিফাইন করতে হবে। এই প্যাটার্নে মূল্যবান findViewById প্রক্রিয়ায় কলের সংখ্যা কমিয়ে নিয়ে আসে।

এই টিউটোরিয়ালের শুরুর দিকে আমরা ব্যক্তিকে প্রতিনিধিত্ব করে এমন CardView-এর জন্য এক্সএমএল লেআউট ডিফাইন করেছি। আমরা সেই লেআউটটি আবারও ব্যবহার করবো। আমাদের কাস্টম ViewHolder-এর গঠনের মধ্যে আমাদের RecyclerView-এর আইটেমের মধ্যে পড়ে এমন সব চিত্র প্রস্তুত করুন।

এরপর, কাস্টম অ্যাডাপ্টারের সাথে একটি কন্সট্রাক্টর জুড়ে দিন যাতে করে RecyclerView-তে প্রদর্শিত ডাটায় এটির নিয়ন্ত্রণ থাকে। যেহেতু আমাদের ডাটা Person অবজেক্টের List আকারে রয়েছে কাজেই নিচের কোডগুলো ব্যবহার করুন:

RecyclerView-তে তিনটি বিমূর্ত প্রক্রিয়া রয়েছে যেগুলো ওভাররাইড করতে হবে। চলুন আমরা getItemCount প্রক্রিয়া দিয়ে শুরু করি। এটি ডাটায় উপস্থিত আইটেমের সংখ্যা জানিয়ে দিবে। যেহেতু আমাদের ডাটা List আকারে রয়েছে কাজেই আমাদের List অবজেক্টের size প্রক্রিয়া আহ্বান করতে হবে:

এরপর, onCreateViewHolder প্রক্রিয়াটি ওভাররাইড করুন। নাম দেখেই বুঝা যাচ্ছে যখন কাস্টম ViewHolder চালু করার প্রয়োজন হয় তখন এই প্রক্রিয়াটি ব্যবহার করা হয়। RecyclerView-এর প্রতিটি আইটেম ব্যবহার করতে পারবে এমন লেআউট নির্দিষ্ট করে দিবো। এটি LayoutInflater ব্যবহার করে প্রসারিত করে এই কাজটি করতে পারেন। সেক্ষেত্রে কাস্টম ViewHolder-এর কন্সট্রাক্টরে আউটপুট পাস করে দিতে হবে।

onBindViewHolder ওভাররাইড করুন যাতে করে RecyclerView-এর প্রতিটি আইটেমের বিষয়বস্তু নির্দিষ্ট করা যায়। এই প্রক্রিয়াটি অনেকটা ListView-এর অ্যাডাপ্টারের getView প্রক্রিয়ার মতো। আমাদের উদাহরণে CardView-এর নাম, বয়স, এবং ছবির ভ্যালু কোথায় স্থাপন করতে হবে তা দেখানো হয়েছে।

সবশেষে, onAttachedToRecyclerView প্রক্রিয়াটি ওভাররাইড করতে হবে। এখনকার মতো, নিচের মতো করে আমরা সুপারক্লাসের এই প্রক্রিয়ার বাস্তবায়ন ব্যবহার করতে পারবো।

ধাপ ৫: অ্যাডাপ্টার ব্যবহার করা

এখন অ্যাডাপ্টারটি প্রস্তুত হয়ে যাওয়ার পর চালু করার জন্য নিচের কোডটি আপনার Activity-তে যোগ করুন এবং অ্যাডাপ্টারটির কন্সট্রাক্টর ও RecyclerView-এর setAdapter প্রক্রিয়াটি কল করে অ্যাডাপ্টারটি ব্যবহার করুন।

ধাপ ৬: কম্পাইল করুন এবং চালু করুন

আপনি যখন কোন অ্যান্ড্রয়েড ডিভাইসে RecyclerView-এর নমুনা চালু করবেন তখন নিচের ফলাফলটির মতোই কিছু একটা দেখতে পাবেন। 

উপসংহার

এই টিউটোরিয়ালে, আপনি অ্যান্ড্রয়েড ললিপপের মাধ্যমে পরিচিত CardView এবং RecyclerView কৌশলগুলো শিখেছি।  ম্যাটেরিয়াল ডিজাইন অ্যাপসে কিভাবে এই কৌশলগুলো ব্যবহার করা যায় সেই উদাহরণও দেখেছেন। মনে রাখবেন যে একটি ListView যা করতে পারে, একটি RecyclerView-ও তাই করতে পারে। কিন্তু যেহেতু ListView-তে স্বল্প সংখ্যক লাইনের কোড দরকার হয় কাজেই ছোট ডাটাবেজের জন্য এটি ব্যবহার করাই শ্রেয়।

CardView এবং RecyclerView ক্লাস সম্পর্কে আরও জানতে আপনি অ্যান্ড্রয়েড ডেভেলপারস রেফারেন্স খুঁজে দেখতে পারেন।


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.