এই কোডল্যাবটি অ্যান্ড্রয়েড কোটলিন ফান্ডামেন্টাল কোর্সের অংশ। আপনি যদি ক্রমানুসারে কোডল্যাবগুলির মাধ্যমে কাজ করেন তবে আপনি এই কোর্সের সর্বাধিক মূল্য পাবেন৷ সমস্ত কোর্স কোডল্যাব অ্যান্ড্রয়েড কোটলিন ফান্ডামেন্টাল কোডল্যাব ল্যান্ডিং পৃষ্ঠায় তালিকাভুক্ত করা হয়েছে।
ভূমিকা
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: লেআউট ম্যানেজার পরিবর্তন করুন
- প্রয়োজন হলে, GitHub থেকে এই কোডল্যাবের জন্য RecyclerViewGridLayout-Starter অ্যাপটি ডাউনলোড করুন এবং অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি খুলুন।
-
fragment_sleep_tracker.xml
লেআউট ফাইলটি খুলুন। -
sleep_list
RecyclerView
সংজ্ঞা থেকে লেআউট ম্যানেজার সরান।
মুছে ফেলার জন্য কোড:
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager
-
SleepTrackerFragment.kt
খুলুন। -
OnCreateView()
এ,return
স্টেটমেন্টের ঠিক আগে, 3টি স্প্যান সহ একটি নতুন উল্লম্ব, টপ-টু-বটমGridLayoutManager
তৈরি করুন।
GridLayoutManager
কনস্ট্রাক্টর চারটি আর্গুমেন্ট নেয়: একটি প্রসঙ্গ, যাactivity
, সংখ্যা স্প্যান (কলাম, ডিফল্ট উল্লম্ব বিন্যাসে), একটি ওরিয়েন্টেশন (ডিফল্ট উল্লম্ব), এবং এটি একটি বিপরীত লেআউট কিনা (ডিফল্টfalse
)।
val manager = GridLayoutManager(activity, 3)
- সেই লাইনের নীচে,
RecyclerView
এইGridLayoutManager
ব্যবহার করতে বলুন।RecyclerView
বাইন্ডিং অবজেক্টে থাকে এবং তাকেsleepList
বলা হয়। (fragment_sleep_tracker.xml
দেখুন।)
binding.sleepList.layoutManager = manager
ধাপ 2: লেআউট পরিবর্তন করুন
list_item_sleep_night.xml
এর বর্তমান লেআউট প্রতি রাতে একটি সম্পূর্ণ সারি ব্যবহার করে ডেটা প্রদর্শন করে। এই ধাপে, আপনি গ্রিডের জন্য আরও কমপ্যাক্ট বর্গ আইটেম লেআউট সংজ্ঞায়িত করুন।
-
list_item_sleep_night.xml
খুলুন। -
sleep_length
TextView
মুছুন, কারণ নতুন ডিজাইনের প্রয়োজন নেই। -
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}" />
- ডিজাইন ভিউতে যাচাই করুন যে
quality_string
TextView
ImageView
নীচে অবস্থিত।
যেহেতু আপনি ডেটা বাইন্ডিং ব্যবহার করেছেন, আপনাকে Adapter
কিছু পরিবর্তন করতে হবে না। কোডটি কেবল কাজ করা উচিত এবং আপনার তালিকাটি একটি গ্রিড হিসাবে প্রদর্শিত হওয়া উচিত।
- অ্যাপটি চালান এবং একটি গ্রিডে ঘুমের ডেটা কীভাবে প্রদর্শিত হয় তা পর্যবেক্ষণ করুন।
মনে রাখবেন যেConstraintLayout
এখনও পুরো প্রস্থ নেয়।GridLayoutManager
আপনার ভিউকে এর স্প্যানের উপর ভিত্তি করে একটি নির্দিষ্ট প্রস্থ দেয়।GridLayoutManager
গ্রিড তৈরি করার সময়, হোয়াইটস্পেস বা ক্লিপিং আইটেম যোগ করার সময় সমস্ত সীমাবদ্ধতা পূরণ করার জন্য যথাসাধ্য চেষ্টা করে।
-
SleepTrackerFragment
এ,GridLayoutManager
তৈরি করে এমন কোডে,GridLayoutManger
জন্য স্প্যানের সংখ্যা 1 এ পরিবর্তন করুন। অ্যাপটি চালান, এবং আপনি একটি তালিকা পাবেন।
val manager = GridLayoutManager(activity, 1)
-
GridLayoutManager
এর জন্য স্প্যানের সংখ্যা 10 এ পরিবর্তন করুন এবং অ্যাপটি চালান। লক্ষ্য করুন যেGridLayoutManager
একটি সারিতে 10 টি আইটেম ফিট করবে, কিন্তু আইটেমগুলি এখন ক্লিপ করা হয়েছে। - স্প্যান গণনা 5 এ পরিবর্তন করুন এবং দিকটি
GridLayoutManager.VERTICAL
এ পরিবর্তন করুন। অ্যাপটি চালান এবং লক্ষ্য করুন কিভাবে আপনি অনুভূমিকভাবে স্ক্রোল করতে পারেন। এই সুন্দর চেহারা করতে আপনার একটি ভিন্ন লেআউট প্রয়োজন হবে.
val manager = GridLayoutManager(activity, 5, GridLayoutManager.HORIZONTAL, false)
- স্প্যান কাউন্ট আবার 3 এবং ওরিয়েন্টেশন উল্লম্ব সেট করতে ভুলবেন না!
অ্যান্ড্রয়েড স্টুডিও প্রকল্প: RecyclerViewGridLayout
- লেআউট ম্যানেজাররা
RecyclerView
এর আইটেমগুলি কীভাবে সাজানো হয় তা পরিচালনা করে। -
RecyclerView
সাধারণ ব্যবহারের ক্ষেত্রে যেমন অনুভূমিক এবং উল্লম্ব তালিকার জন্যLinearLayout
এবং গ্রিডের জন্যGridLayout
এর জন্য আউট-অফ-দ্য-বক্স লেআউট পরিচালকের সাথে আসে। - আরও জটিল ব্যবহারের ক্ষেত্রে, একটি কাস্টম
LayoutManager
প্রয়োগ করুন। - ডিজাইনের দৃষ্টিকোণ থেকে, আইকন বা চিত্র হিসাবে উপস্থাপন করা যেতে পারে এমন আইটেমগুলির তালিকার জন্য
GridLayout
সবচেয়ে ভাল ব্যবহার করা হয়। -
GridLayout
সারি এবং কলামের গ্রিডে আইটেমগুলিকে সাজায়। উল্লম্ব স্ক্রোলিং অনুমান, একটি সারিতে প্রতিটি আইটেম একটি "স্প্যান" বলা হয় গ্রহণ করে. - আপনি কাস্টম লেআউট ম্যানেজারের প্রয়োজন ছাড়াই আরও আকর্ষণীয় গ্রিড তৈরি করে, একটি আইটেম কতগুলি স্প্যান নেয় তা কাস্টমাইজ করতে পারেন।
- গ্রিডে একটি আইটেমের জন্য একটি আইটেম লেআউট তৈরি করুন এবং লেআউট ম্যানেজার আইটেমগুলি সাজানোর যত্ন নেয়।
- আপনি
RecyclerView
জন্যLayoutManager
সেট করতে পারেন XML লেআউট ফাইলে যেটিতে<RecyclerView>
উপাদান রয়েছে বা প্রোগ্রাম্যাটিকভাবে।
Udacity কোর্স:
অ্যান্ড্রয়েড বিকাশকারী ডকুমেন্টেশন:
এই বিভাগে একজন প্রশিক্ষকের নেতৃত্বে একটি কোর্সের অংশ হিসাবে এই কোডল্যাবের মাধ্যমে কাজ করা শিক্ষার্থীদের জন্য সম্ভাব্য হোমওয়ার্ক অ্যাসাইনমেন্ট তালিকাভুক্ত করা হয়েছে। নিম্নলিখিতগুলি করা প্রশিক্ষকের উপর নির্ভর করে:
- প্রয়োজনে হোমওয়ার্ক বরাদ্দ করুন।
- শিক্ষার্থীদের সাথে যোগাযোগ করুন কিভাবে হোমওয়ার্ক অ্যাসাইনমেন্ট জমা দিতে হয়।
- হোমওয়ার্ক অ্যাসাইনমেন্ট গ্রেড.
প্রশিক্ষকরা এই পরামর্শগুলি যতটা কম বা যতটা চান ততটা ব্যবহার করতে পারেন, এবং তাদের উপযুক্ত মনে করে অন্য কোনও হোমওয়ার্ক বরাদ্দ করতে নির্দ্বিধায় করা উচিত।
আপনি যদি নিজে থেকে এই কোডল্যাবের মাধ্যমে কাজ করে থাকেন, তাহলে আপনার জ্ঞান পরীক্ষা করার জন্য এই হোমওয়ার্ক অ্যাসাইনমেন্টগুলিকে নির্দ্বিধায় ব্যবহার করুন৷
এই প্রশ্নগুলোর উত্তর দাও
প্রশ্ন 1
নিচের কোনটি লেআউট ম্যানেজার অ্যান্ড্রয়েড দ্বারা সরবরাহ করা হয়? প্রযোজ্য সব নির্বাচন করুন.
▢ LinearLayouManager
▢ GridLayoutManager
▢ CircularLayoutManager
ম্যানেজার
▢ StaggeredGridLayoutManager
প্রশ্ন 2
একটি "স্প্যান" কি?
▢ GridLayoutManager
দ্বারা তৈরি একটি গ্রিডের আকার।
▢ গ্রিডে একটি কলামের প্রস্থ।
▢ একটি গ্রিডে একটি আইটেমের মাত্রা।
▢ একটি গ্রিডে কলামের সংখ্যা যার একটি উল্লম্ব অভিযোজন আছে।
পরবর্তী পাঠ শুরু করুন: