রিসাইক্লার ভিউ উদাহরণের জন্য গ্রিড লেআউট ম্যানেজারে যাওয়ার আগে, আমাদের জানা উচিত অ্যান্ড্রয়েডে রিসাইক্লার ভিউ কী। রিসাইক্লার ভিউ হল লিস্ট ভিউ এর আরও উন্নত সংস্করণ এবং এটি ভিউ হোল্ডার ডিজাইন প্যাটার্নের উপর ভিত্তি করে কাজ করে। রিসাইক্লার ভিউ ব্যবহার করে আমরা গ্রিড এবং আইটেমের তালিকা দেখাতে পারি।
এই উদাহরণটি দেখায় কিভাবে গ্রিড লেআউট ম্যানেজারের সাথে রিসাইক্লার ভিউকে একীভূত করতে হয় একটি সুন্দর স্টুডেন্ট রেকর্ড অ্যাপ তৈরি করে যা বয়সের সাথে ছাত্রের নাম প্রদর্শন করে।
ধাপ 1 − অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করুন, ফাইল ⇒ নতুন প্রকল্পে যান এবং একটি নতুন প্রকল্প তৈরি করতে প্রয়োজনীয় সমস্ত বিবরণ পূরণ করুন৷
ধাপ 2 − build.gradle খুলুন এবং রিসাইক্লার ভিউ লাইব্রেরি নির্ভরতা যোগ করুন।
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.andy.tutorialspoint"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:recyclerview-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
} ধাপ 3 − res/layout/activity_main.xml-এ নিম্নলিখিত কোড যোগ করুন।
<?xml version = "1.0" encoding = "utf-8"?> <RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:tools = "http://schemas.android.com/tools" xmlns:app = "http://schemas.android.com/apk/res-auto" android:layout_width = "match_parent" android:layout_height = "match_parent" app:layout_behavior = "@string/appbar_scrolling_view_behavior" tools:showIn = "@layout/activity_main" tools:context = ".MainActivity"> <android.support.v7.widget.RecyclerView android:id = "@+id/recycler_view" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:scrollbars = "vertical" /> </RelativeLayout>
উপরের কোডে আমরা রিসাইক্লার ভিউ উইন্ডো ম্যানেজারে আপেক্ষিক প্যারেন্ট লেআউট হিসেবে যুক্ত করেছি।
পদক্ষেপ 4৷ − src/MainActivity.java
-এ নিম্নলিখিত কোড যোগ করুনpackage com.example.andy.tutorialspoint;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private StudentAdapter studentAdapter;
private List studentDataList = new ArrayList<>();
@TargetApi(Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view);
studentAdapter = new StudentAdapter(studentDataList);
RecyclerView.LayoutManager manager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(manager);
recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
recyclerView.setAdapter(studentAdapter);
StudentDataPrepare();
}
@RequiresApi(api = Build.VERSION_CODES.N)
private void StudentDataPrepare() {
studentData data = new studentData("sai", 25);
studentDataList.add(data);
data = new studentData("sai", 25);
studentDataList.add(data);
data = new studentData("raghu", 20);
studentDataList.add(data);
data = new studentData("raj", 28);
studentDataList.add(data);
data = new studentData("amar", 15);
studentDataList.add(data);
data = new studentData("bapu", 19);
studentDataList.add(data);
data = new studentData("chandra", 52);
studentDataList.add(data);
data = new studentData("deraj", 30);
studentDataList.add(data);
data = new studentData("eshanth", 28);
studentDataList.add(data);
Collections.sort(studentDataList, new Comparator() {
@Override
public int compare(studentData o1, studentData o2) {
return o1.name.compareTo(o2.name);
}
});
}
} উপরের কোডে আমরা রিসাইক্লার ভিউ এবং StudentAdapter যোগ করেছি। সেই স্টুডেন্ট অ্যাডাপ্টারে আমরা অ্যারেলিস্ট হিসাবে StudentDatalist পাস করেছি। স্টুডেন্ট ডেটা লিস্টে ছাত্রের নাম এবং বয়স থাকে।
গ্রিডগুলি পেতে, আমাদের নীচে দেখানো হিসাবে গ্রিড লেআউট ম্যানেজার ব্যবহার করতে হবে -
RecyclerView.LayoutManager manager = new GridLayoutManager(this, 2);
উপরের কোডে আমরা গ্রিডলেআউট ম্যানেজার হিসাবে লেআউট ম্যানেজার ব্যবহার করেছি এবং 2 হিসাবে সেল যোগ করেছি। সুতরাং এটি প্রতিটি সারিতে দুটি গ্রিড সহ ফলাফল দেখাবে।
রিসাইক্লার ভিউ আইটেমগুলির তুলনা করার জন্য আমরা সংগ্রহের কাঠামো এবং সাজানোর পদ্ধতি ব্যবহার করেছি যা নীচে দেখানো হয়েছে -
Collections.sort(studentDataList, new Comparator() {
@Override
public int compare(studentData o1, studentData o2) {
return o1.name.compareTo(o2.name);
}
}); উপরের কোডে আমরা নাম ব্যবহার করে উপাদানের তুলনা করছি।
ধাপ 5 − src/ StudentAdapter.java সংশোধিত ফাইলের বিষয়বস্তু নিম্নরূপ।
package com.example.andy.tutorialspoint;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.List;
import java.util.Random;
class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.MyViewHolder> {
List<studentData> studentDataList;
public StudentAdapter(List<studentData> studentDataList) {
this.studentDataList = studentDataList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.student_list_row, viewGroup, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder viewHolder, int i) {
studentData data=studentDataList.get(i);
Random rnd = new Random();
int currentColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
viewHolder.parent.setBackgroundColor(currentColor);
viewHolder.name.setText(data.name);
viewHolder.age.setText(String.valueOf(data.age));
}
@Override
public int getItemCount() {
return studentDataList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView name,age;
LinearLayout parent;
public MyViewHolder(View itemView) {
super(itemView);
parent = itemView.findViewById(R.id.parent);
name = itemView.findViewById(R.id.name);
age = itemView.findViewById(R.id.age);
}
}
} অ্যাডাপ্টার ক্লাসে আমাদের চারটি পদ্ধতি রয়েছে যা নীচে দেখানো হয়েছে -
-
onCreateViewHolder() :- এটি একটি ভিউ হোল্ডার তৈরি করতে ব্যবহৃত হয় এবং এটি একটি ভিউ প্রদান করে।
-
onBindViewHolder() - এটি তৈরি করা ভিউ হোল্ডারের সাথে আবদ্ধ হবে৷
-
getItemCount() - এতে তালিকার আকার রয়েছে৷
-
MyViewHolder ক্লাস - এটি ভিউ হোল্ডার অভ্যন্তরীণ শ্রেণী যা RecyclerView.ViewHolder
দ্বারা প্রসারিত
রিসাইক্লার ভিউ আইটেমগুলির জন্য র্যান্ডম ব্যাকগ্রাউন্ড সেট করতে, আমরা র্যান্ডম ক্লাস ব্যবহার করে র্যান্ডম রঙ তৈরি করেছি (যা অ্যান্ড্রয়েডে পূর্বনির্ধারিত শ্রেণী) এবং নীচে দেখানো আইটেমের প্যারেন্ট অফ ভিউ আইটেমে রঙ যোগ করেছি -
Random rnd = new Random(); int currentColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); viewHolder.parent.setBackgroundColor(currentColor);
ধাপ 6 − নিচে xml res/layout/student_list_row.xml-এর পরিবর্তিত বিষয়বস্তু রয়েছে।
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "horizontal" android:layout_width="match_parent" android:weightSum =" 1" android:layout_height="wrap_content"> <TextView android:id = "@+id/name" android:layout_width = "0dp" android:layout_weight = "0.5" android:gravity = "center" android:textSize = "15sp" android:layout_height = "100dp" /> <TextView android:id = "@+id/age" android:layout_width = "0dp" android:layout_weight = "0.5" android:gravity = "center" android:textSize = "15sp" android:layout_height = "100dp" /> </LinearLayout>
উপরের তালিকা ভিউতে আমরা নাম এবং বয়সের জন্য দুটি পাঠ্য ভিউ তৈরি করেছি।
পদক্ষেপ 7 − সংশোধিত ফাইল src/ studentData.java এর বিষয়বস্তু নিম্নরূপ।
package com.example.andy.tutorialspoint;
class studentData {
String name;
int age;
public studentData(String name, int age) {
this.name = name;
this.age = age;
}
} উপরোক্ত স্টুডেন্ট ডেটা অবজেক্ট সম্পর্কে অবহিত করে। আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা যাক. আমি ধরে নিচ্ছি আপনি আপনার কম্পিউটারের সাথে আপনার আসল অ্যান্ড্রয়েড মোবাইল ডিভাইসটি সংযুক্ত করেছেন৷ অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি চালাতে, আপনার প্রোজেক্টের অ্যাক্টিভিটি ফাইলগুলির একটি খুলুন এবং টুলবার থেকে রান আইকনে ক্লিক করুন। একটি বিকল্প হিসাবে আপনার মোবাইল ডিভাইস নির্বাচন করুন এবং তারপরে আপনার মোবাইল ডিভাইসটি পরীক্ষা করুন যা আপনার ডিফল্ট স্ক্রীন প্রদর্শন করবে -
