রিসাইক্লার ভিউ উদাহরণের জন্য র্যান্ডম ব্যাকগ্রাউন্ড কালার সেট করার আগে, আমাদের জানা উচিত অ্যান্ড্রয়েডে রিসাইক্লার ভিউ কী। রিসাইক্লার ভিউ হল লিস্ট ভিউ এর আরও উন্নত সংস্করণ এবং এটি ভিউ হোল্ডার ডিজাইন প্যাটার্নের উপর ভিত্তি করে কাজ করে। রিসাইক্লার ভিউ ব্যবহার করে আমরা গ্রিড এবং আইটেমের তালিকা দেখাতে পারি।
এই উদাহরণটি দেখায় যে কীভাবে একটি সুন্দর ছাত্র রেকর্ড অ্যাপ তৈরি করে রিসাইক্লারভিউয়ের জন্য র্যান্ডম ব্যাকগ্রাউন্ড সেট করবেন যা বয়সের সাথে ছাত্রের নাম প্রদর্শন করে৷
ধাপ 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="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" xmlns:app="https://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.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; 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<studentData> 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 LinearLayoutManager(this); 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কে ArrayList হিসেবে পাস করেছি। স্টুডেন্ট ডেটা লিস্টে ছাত্রের নাম এবং বয়স থাকে।
রিসাইক্লার ভিউ আইটেমগুলির তুলনা করার জন্য আমরা সংগ্রহের কাঠামো এবং সাজানোর পদ্ধতি ব্যবহার করেছি যা নীচে দেখানো হয়েছে -
Collections.sort(studentDataList, new Comparator<studentData>() { @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="https://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; } }
উপরের কোডে স্টুডেন্ট ডাটা অবজেক্ট সম্পর্কে জানানো হয়েছে। আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা যাক. আমি ধরে নিচ্ছি আপনি আপনার কম্পিউটারের সাথে আপনার আসল অ্যান্ড্রয়েড মোবাইল ডিভাইসটি সংযুক্ত করেছেন৷ অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি চালাতে, আপনার প্রোজেক্টের অ্যাক্টিভিটি ফাইলগুলির একটি খুলুন এবং টুলবার থেকে রান আইকনে ক্লিক করুন। একটি বিকল্প হিসাবে আপনার মোবাইল ডিভাইস নির্বাচন করুন এবং তারপরে আপনার মোবাইল ডিভাইসটি পরীক্ষা করুন যা আপনার ডিফল্ট স্ক্রীন প্রদর্শন করবে -
উপরের ফলাফলে, আমরা বর্ণমালা A এবং র্যান্ডম ব্যাকগ্রাউন্ড কালার থেকে ডেটা দেখিয়েছি। এখন নিচে স্ক্রোল করুন। এটি নীচে দেখানো ফলাফলটি দেখায় -