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

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

ভূমিকা

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

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

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

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

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

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

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

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

আপনি কি করবেন

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

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

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

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

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

পূর্ববর্তী RecyclerView , আপনি যখন 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 অ্যাপটি ডাউনলোড করুন এবং Android স্টুডিওতে প্রকল্পটি খুলুন।
  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. এই লাইনের নীচে, GridLayoutManager RecyclerView করতে বলুন। 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. কোয়ালিটি_স্ট্রিং TextView সরান যাতে এটি quality_string - 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. ডিজাইন ভিউতে যাচাই করুন যে কোয়ালিটি_স্ট্রিং TextView quality_string - 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 -এর জন্য লেআউট ম্যানেজার সেট করতে পারেন XML লেআউট ফাইলে যেটিতে < LayoutManager <RecyclerView> উপাদান রয়েছে বা প্রোগ্রাম্যাটিকভাবে।

Udacity কোর্স:

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

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

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

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

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

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

প্রশ্ন 1

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

LinearLayouManager লিনিয়ারলেউ ম্যানেজার

GridLayoutManager

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

StaggeredGridLayoutManager

প্রশ্ন 2

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

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

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

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

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

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