অ্যান্ড্রয়েড কোটলিন ফান্ডামেন্টালস 07.3: রিসাইক্লারভিউ সহ গ্রিডলেআউট

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

ভূমিকা

RecyclerView এর প্রধান শক্তিগুলির মধ্যে একটি হল এটি আপনাকে আপনার লেআউট কৌশল নিয়ন্ত্রণ এবং পরিবর্তন করতে লেআউট পরিচালকদের ব্যবহার করতে দেয়। একটি LayoutManager পরিচালনা করে কিভাবে RecyclerView এর আইটেমগুলো সাজানো হয়।

RecyclerView সাধারণ ব্যবহারের ক্ষেত্রে অ-অব-দ্য-বক্স লেআউট পরিচালকদের সাথে আসে। উদাহরণস্বরূপ, আপনি অনুভূমিক এবং উল্লম্ব তালিকার জন্য LinearLayout বা গ্রিডের জন্য GridLayout ব্যবহার করতে পারেন। আরো জটিল ব্যবহারের ক্ষেত্রে, আপনাকে একটি কাস্টম LayoutManager প্রয়োগ করতে হবে।

এই কোডল্যাবে, আপনি আগের কোডল্যাব থেকে স্লিপ-ট্র্যাকার অ্যাপে তৈরি করে তালিকার পরিবর্তে গ্রিড লেআউট ব্যবহার করে কীভাবে ডেটা প্রদর্শন করবেন তা শিখবেন। (যদি আপনার পূর্ববর্তী কোডল্যাব থেকে অ্যাপটি না থাকে তবে আপনি এই কোডল্যাবের জন্য স্টার্টার কোড ডাউনলোড করতে পারেন।)

আপনি ইতিমধ্যে কি জানা উচিত

আপনার সাথে পরিচিত হওয়া উচিত:

  • একটি Activity , Fragments এবং Views ব্যবহার করে একটি মৌলিক ইউজার ইন্টারফেস তৈরি করা
  • টুকরোগুলির মধ্যে নেভিগেট করা এবং খণ্ডগুলির মধ্যে ডেটা পাস করতে safeArgs ব্যবহার করে৷
  • মডেল দেখুন, মডেল কারখানা দেখুন, এবং রূপান্তর
  • LiveData এবং তাদের পর্যবেক্ষক
  • কিভাবে একটি Room ডাটাবেস তৈরি করবেন, একটি DAO তৈরি করবেন এবং সত্তাকে সংজ্ঞায়িত করবেন
  • ডাটাবেস কাজ এবং অন্যান্য দীর্ঘ-চলমান কাজগুলির জন্য কোরোটিনগুলি কীভাবে ব্যবহার করবেন
  • Adapter , ViewHolder এবং আইটেম লেআউট সহ একটি মৌলিক RecyclerView কীভাবে বাস্তবায়ন করবেন
  • RecyclerView জন্য ডেটা বাইন্ডিং কিভাবে বাস্তবায়ন করবেন
  • ডেটা রূপান্তর করতে কীভাবে বাঁধাই অ্যাডাপ্টার তৈরি এবং ব্যবহার করবেন

আপনি কি শিখবেন

  • RecyclerView আপনার ডেটা কীভাবে প্রদর্শিত হয় তা পরিবর্তন করতে কীভাবে একটি ভিন্ন LayoutManager ব্যবহার করবেন
  • আপনার ঘুমের ডেটার জন্য কীভাবে একটি গ্রিড লেআউট তৈরি করবেন

আপনি কি করবেন

  • এই সিরিজের আগের কোডল্যাব থেকে স্লিপ-ট্র্যাকার অ্যাপ তৈরি করুন।
  • ঘুমের ডেটার একটি গ্রিড দিয়ে অ্যাপে RecyclerView দ্বারা প্রদর্শিত ঘুমের ডেটার তালিকা প্রতিস্থাপন করুন।

স্লিপ-ট্র্যাকার অ্যাপটিতে দুটি স্ক্রীন রয়েছে, যা খন্ড দ্বারা উপস্থাপিত হয়, যেমনটি নীচের চিত্রে দেখানো হয়েছে।

বাম দিকে দেখানো প্রথম স্ক্রিনে ট্র্যাকিং শুরু এবং বন্ধ করার জন্য বোতাম রয়েছে৷ স্ক্রিনটি ব্যবহারকারীর ঘুমের কিছু ডেটা দেখায়। ক্লিয়ার বোতামটি স্থায়ীভাবে সমস্ত ডেটা মুছে দেয় যা অ্যাপ ব্যবহারকারীর জন্য সংগ্রহ করেছে। দ্বিতীয় স্ক্রীন, ডানদিকে দেখানো হয়েছে, ঘুমের মানের রেটিং নির্বাচন করার জন্য।

এই অ্যাপটি একটি UI কন্ট্রোলার, ভিউ মডেল এবং LiveData সহ একটি সরলীকৃত আর্কিটেকচার এবং ঘুমের ডেটা বজায় রাখার জন্য একটি Room ডাটাবেস ব্যবহার করে৷

ঘুমের ডেটা একটি RecyclerView এ প্রদর্শিত হয়। এই কোডল্যাবে, আপনি একটি GridLayout ব্যবহার করতে অ্যাপ পরিবর্তন করেন। চূড়ান্ত স্ক্রিনটি নীচের স্ক্রিনশটের মতো দেখাবে।

পূর্ববর্তী কোডল্যাবে, আপনি যখন RecyclerView যোগ করেছেন fragment_sleep_tracker.xml এ, আপনি কোনো কাস্টমাইজেশন ছাড়াই একটি LinearLayoutManager যোগ করেছেন। এই কোডটি একটি উল্লম্ব তালিকা হিসাবে ডেটা প্রদর্শন করে।

app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"

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

গ্রিডলেআউট

আরেকটি সাধারণ ব্যবহারের ক্ষেত্রে ব্যবহারকারীকে প্রচুর ডেটা দেখাতে হবে, যা আপনি GridLayout ব্যবহার করে করতে পারেন। RecyclerView জন্য GridLayoutManager একটি স্ক্রোলযোগ্য গ্রিড হিসাবে ডেটা রাখে, যেমনটি নীচে দেখানো হয়েছে।

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

কিভাবে গ্রিডলেআউট আইটেমগুলিকে সাজায়

GridLayout সারি এবং কলামের গ্রিডে আইটেমগুলিকে সাজায়। উল্লম্ব স্ক্রোলিং অনুমান করে, ডিফল্টরূপে, একটি সারিতে প্রতিটি আইটেম একটি "স্প্যান" নেয়। (এই ক্ষেত্রে, একটি স্প্যান একটি কলামের প্রস্থের সমান।)

নীচে দেখানো প্রথম দুটি উদাহরণে, প্রতিটি সারি তিনটি স্প্যান দিয়ে তৈরি। ডিফল্টরূপে, GridLayoutManager প্রতিটি আইটেমকে স্প্যান গণনা পর্যন্ত একটি স্প্যানে রাখে, যা আপনি নির্দিষ্ট করেন। যখন এটি স্প্যান গণনায় পৌঁছায়, এটি পরবর্তী লাইনে মোড়ানো হয়।

ডিফল্টরূপে, প্রতিটি আইটেম একটি স্প্যান নেয়, তবে আপনি একটি আইটেমকে কতগুলি স্প্যান দখল করতে হবে তা নির্দিষ্ট করে আরও প্রশস্ত করতে পারেন৷ উদাহরণস্বরূপ, ডানদিকের স্ক্রীনের শীর্ষ আইটেমটি (নীচে দেখানো হয়েছে) তিনটি স্প্যান নেয়।

এই টাস্কে, আপনি RecyclerView নিন যা আপনি শেষ অনুশীলনে শেষ করেছেন এবং একটি GridLayoutManager ব্যবহার করে ডেটা প্রদর্শন করতে এটি আপডেট করুন। আপনি আগের কোডল্যাব থেকে স্লিপ-ট্র্যাকার অ্যাপটি ব্যবহার চালিয়ে যেতে পারেন, অথবা আপনি GitHub থেকে RecyclerViewGridLayout-Starter অ্যাপটি ডাউনলোড করতে পারেন।

ধাপ 1: লেআউট ম্যানেজার পরিবর্তন করুন

  1. প্রয়োজন হলে, GitHub থেকে এই কোডল্যাবের জন্য RecyclerViewGridLayout-Starter অ্যাপটি ডাউনলোড করুন এবং অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি খুলুন।
  2. fragment_sleep_tracker.xml লেআউট ফাইলটি খুলুন।
  3. sleep_list RecyclerView সংজ্ঞা থেকে লেআউট ম্যানেজার সরান।

মুছে ফেলার জন্য কোড:

app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager
  1. SleepTrackerFragment.kt খুলুন।
  2. OnCreateView() এ, return স্টেটমেন্টের ঠিক আগে, 3টি স্প্যান সহ একটি নতুন উল্লম্ব, টপ-টু-বটম GridLayoutManager তৈরি করুন।

    GridLayoutManager কনস্ট্রাক্টর চারটি আর্গুমেন্ট নেয়: একটি প্রসঙ্গ, যা activity , সংখ্যা স্প্যান (কলাম, ডিফল্ট উল্লম্ব বিন্যাসে), একটি ওরিয়েন্টেশন (ডিফল্ট উল্লম্ব), এবং এটি একটি বিপরীত লেআউট কিনা (ডিফল্ট false )।
val manager = GridLayoutManager(activity, 3)
  1. সেই লাইনের নীচে, RecyclerView এই GridLayoutManager ব্যবহার করতে বলুন। RecyclerView বাইন্ডিং অবজেক্টে থাকে এবং তাকে sleepList বলা হয়। ( fragment_sleep_tracker.xml দেখুন।)
binding.sleepList.layoutManager = manager

ধাপ 2: লেআউট পরিবর্তন করুন

list_item_sleep_night.xml এর বর্তমান লেআউট প্রতি রাতে একটি সম্পূর্ণ সারি ব্যবহার করে ডেটা প্রদর্শন করে। এই ধাপে, আপনি গ্রিডের জন্য আরও কমপ্যাক্ট বর্গ আইটেম লেআউট সংজ্ঞায়িত করুন।

  1. list_item_sleep_night.xml খুলুন।
  2. sleep_length TextView মুছুন, কারণ নতুন ডিজাইনের প্রয়োজন নেই।
  3. quality_string TextView সরান যাতে এটি ImageView নীচে প্রদর্শিত হয়। এটি করার জন্য, আপনাকে বেশ কয়েকটি জিনিস আপডেট করতে হবে। quality_string TextView জন্য এখানে চূড়ান্ত লেআউট রয়েছে:
<TextView
   android:id="@+id/quality_string"
   android:layout_width="0dp"
   android:layout_height="20dp"
   android:textAlignment="center"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintEnd_toEndOf="@+id/quality_image"
   app:layout_constraintHorizontal_bias="0.0"
   app:layout_constraintStart_toStartOf="@+id/quality_image"
   app:layout_constraintTop_toBottomOf="@+id/quality_image"
   tools:text="Excellent!!!"
   app:sleepQualityString="@{sleep}" />
  1. ডিজাইন ভিউতে যাচাই করুন যে quality_string TextView ImageView নীচে অবস্থিত।

যেহেতু আপনি ডেটা বাইন্ডিং ব্যবহার করেছেন, আপনাকে Adapter কিছু পরিবর্তন করতে হবে না। কোডটি কেবল কাজ করা উচিত এবং আপনার তালিকাটি একটি গ্রিড হিসাবে প্রদর্শিত হওয়া উচিত।

  1. অ্যাপটি চালান এবং একটি গ্রিডে ঘুমের ডেটা কীভাবে প্রদর্শিত হয় তা পর্যবেক্ষণ করুন।

    মনে রাখবেন যে ConstraintLayout এখনও পুরো প্রস্থ নেয়। GridLayoutManager আপনার ভিউকে এর স্প্যানের উপর ভিত্তি করে একটি নির্দিষ্ট প্রস্থ দেয়। GridLayoutManager গ্রিড তৈরি করার সময়, হোয়াইটস্পেস বা ক্লিপিং আইটেম যোগ করার সময় সমস্ত সীমাবদ্ধতা পূরণ করার জন্য যথাসাধ্য চেষ্টা করে।
  1. SleepTrackerFragment এ, GridLayoutManager তৈরি করে এমন কোডে, GridLayoutManger জন্য স্প্যানের সংখ্যা 1 এ পরিবর্তন করুন। অ্যাপটি চালান, এবং আপনি একটি তালিকা পাবেন।
val manager = GridLayoutManager(activity, 1)
  1. GridLayoutManager এর জন্য স্প্যানের সংখ্যা 10 এ পরিবর্তন করুন এবং অ্যাপটি চালান। লক্ষ্য করুন যে GridLayoutManager একটি সারিতে 10 টি আইটেম ফিট করবে, কিন্তু আইটেমগুলি এখন ক্লিপ করা হয়েছে।
  2. স্প্যান গণনা 5 এ পরিবর্তন করুন এবং দিকটি GridLayoutManager.VERTICAL এ পরিবর্তন করুন। অ্যাপটি চালান এবং লক্ষ্য করুন কিভাবে আপনি অনুভূমিকভাবে স্ক্রোল করতে পারেন। এই সুন্দর চেহারা করতে আপনার একটি ভিন্ন লেআউট প্রয়োজন হবে.
val manager = GridLayoutManager(activity, 5, GridLayoutManager.HORIZONTAL, false)
  1. স্প্যান কাউন্ট আবার 3 এবং ওরিয়েন্টেশন উল্লম্ব সেট করতে ভুলবেন না!

অ্যান্ড্রয়েড স্টুডিও প্রকল্প: RecyclerViewGridLayout

  • লেআউট ম্যানেজাররা RecyclerView এর আইটেমগুলি কীভাবে সাজানো হয় তা পরিচালনা করে।
  • RecyclerView সাধারণ ব্যবহারের ক্ষেত্রে যেমন অনুভূমিক এবং উল্লম্ব তালিকার জন্য LinearLayout এবং গ্রিডের জন্য GridLayout এর জন্য আউট-অফ-দ্য-বক্স লেআউট পরিচালকের সাথে আসে।
  • আরও জটিল ব্যবহারের ক্ষেত্রে, একটি কাস্টম LayoutManager প্রয়োগ করুন।
  • ডিজাইনের দৃষ্টিকোণ থেকে, আইকন বা চিত্র হিসাবে উপস্থাপন করা যেতে পারে এমন আইটেমগুলির তালিকার জন্য GridLayout সবচেয়ে ভাল ব্যবহার করা হয়।
  • GridLayout সারি এবং কলামের গ্রিডে আইটেমগুলিকে সাজায়। উল্লম্ব স্ক্রোলিং অনুমান, একটি সারিতে প্রতিটি আইটেম একটি "স্প্যান" বলা হয় গ্রহণ করে.
  • আপনি কাস্টম লেআউট ম্যানেজারের প্রয়োজন ছাড়াই আরও আকর্ষণীয় গ্রিড তৈরি করে, একটি আইটেম কতগুলি স্প্যান নেয় তা কাস্টমাইজ করতে পারেন।
  • গ্রিডে একটি আইটেমের জন্য একটি আইটেম লেআউট তৈরি করুন এবং লেআউট ম্যানেজার আইটেমগুলি সাজানোর যত্ন নেয়।
  • আপনি RecyclerView জন্য LayoutManager সেট করতে পারেন XML লেআউট ফাইলে যেটিতে <RecyclerView> উপাদান রয়েছে বা প্রোগ্রাম্যাটিকভাবে।

Udacity কোর্স:

অ্যান্ড্রয়েড বিকাশকারী ডকুমেন্টেশন:

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

  • প্রয়োজনে হোমওয়ার্ক বরাদ্দ করুন।
  • শিক্ষার্থীদের সাথে যোগাযোগ করুন কিভাবে হোমওয়ার্ক অ্যাসাইনমেন্ট জমা দিতে হয়।
  • হোমওয়ার্ক অ্যাসাইনমেন্ট গ্রেড.

প্রশিক্ষকরা এই পরামর্শগুলি যতটা কম বা যতটা চান ততটা ব্যবহার করতে পারেন, এবং তাদের উপযুক্ত মনে করে অন্য কোনও হোমওয়ার্ক বরাদ্দ করতে নির্দ্বিধায় করা উচিত।

আপনি যদি নিজে থেকে এই কোডল্যাবের মাধ্যমে কাজ করে থাকেন, তাহলে আপনার জ্ঞান পরীক্ষা করার জন্য এই হোমওয়ার্ক অ্যাসাইনমেন্টগুলিকে নির্দ্বিধায় ব্যবহার করুন৷

এই প্রশ্নগুলোর উত্তর দাও

প্রশ্ন 1

নিচের কোনটি লেআউট ম্যানেজার অ্যান্ড্রয়েড দ্বারা সরবরাহ করা হয়? প্রযোজ্য সব নির্বাচন করুন.

LinearLayouManager

GridLayoutManager

CircularLayoutManager ম্যানেজার

StaggeredGridLayoutManager

প্রশ্ন 2

একটি "স্প্যান" কি?

GridLayoutManager দ্বারা তৈরি একটি গ্রিডের আকার।

▢ গ্রিডে একটি কলামের প্রস্থ।

▢ একটি গ্রিডে একটি আইটেমের মাত্রা।

▢ একটি গ্রিডে কলামের সংখ্যা যার একটি উল্লম্ব অভিযোজন আছে।

পরবর্তী পাঠ শুরু করুন: 7.4: RecyclerView আইটেমগুলির সাথে ইন্টারঅ্যাক্ট করা