Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

GridLayoutManager के साथ RecyclerView का उपयोग करके सरल Android ग्रिड उदाहरण


परिचय

RecyclerView के लिए Grid Layout Manager उदाहरण में जाने से पहले, हमें पता होना चाहिए कि Android में RecyclerView क्या है। RecyclerView ListView का अधिक उन्नत संस्करण है और यह View Holder डिज़ाइन पैटर्न पर आधारित काम करता है। RecyclerView का उपयोग करके हम ग्रिड और आइटम की सूची दिखा सकते हैं।

यह उदाहरण एक सुंदर छात्र रिकॉर्ड ऐप बनाकर दर्शाता है जो छात्र का नाम और उम्र प्रदर्शित करता है, और RecyclerView को Grid Layout Manager के साथ कैसे एकीकृत करें।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।

चरण 2: build.gradle में RecyclerView लाइब्रेरी डिपेंडेंसी जोड़ें

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-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: 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>

उपरोक्त कोड में हमने RecyclerView को रिलेटिव पैरेंट लेआउट के रूप में विंडो मैनेजर में जोड़ा है।

चरण 4: 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<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 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<StudentData>() {
            @Override
            public int compare(StudentData o1, StudentData o2) {
                return o1.name.compareTo(o2.name);
            }
        });
    }
}

उपरोक्त कोड में हमने RecyclerView और StudentAdapter जोड़ा है। उस Student Adapter में हमने StudentDataList को ArrayList के रूप में पास किया है। Student Data List में छात्र का नाम और उम्र होती है।

Grid प्राप्त करने के लिए, हमें Grid Layout Manager का उपयोग करना होगा जैसा कि नीचे दिखाया गया है:

RecyclerView.LayoutManager manager = new GridLayoutManager(this, 2);

उपरोक्त कोड में हमने Layout Manager को GridLayoutManager के रूप में उपयोग किया है और सेल को 2 के रूप में जोड़ा है। इसलिए यह प्रत्येक पंक्ति में दो ग्रिड के साथ परिणाम दिखाएगा।

RecyclerView आइटम की तुलना करने के लिए हमने Collections Framework और Sort विधि का उपयोग किया है जैसा कि नीचे दिखाया गया है:

Collections.sort(studentDataList, new Comparator<StudentData>() {
    @Override
    public int compare(StudentData o1, StudentData o2) {
        return o1.name.compareTo(o2.name);
    }
});

उपरोक्त कोड में हम नाम का उपयोग करके तत्वों की तुलना कर रहे हैं।

चरण 5: 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);
        }
    }
}

Adapter क्लास में चार विधियां हैं:

  • onCreateViewHolder() - व्यू होल्डर बनाने के लिए उपयोग किया जाता है और यह एक व्यू लौटाता है।
  • onBindViewHolder() - यह बनाए गए व्यू होल्डर के साथ बाइंड होता है।
  • getItemCount() - इसमें सूची का आकार होता है।
  • MyViewHolder क्लास - यह व्यू होल्डर इनर क्लास है जिसे RecyclerView.ViewHolder द्वारा एक्सटेंड किया गया है।

RecyclerView आइटम के लिए रैंडम बैकग्राउंड सेट करने के लिए, हमने Random क्लास (जो Android में पूर्वनिर्धारित क्लास है) का उपयोग करके रैंडम रंग उत्पन्न किए और व्यू आइटम के पैरेंट में रंग जोड़ा जैसा कि नीचे दिखाया गया है:

Random rnd = new Random();
int currentColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
viewHolder.parent.setBackgroundColor(currentColor);

चरण 6: 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>

उपरोक्त लिस्ट व्यू में हमने नाम और उम्र के लिए दो TextViews बनाए हैं।

चरण 7: 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;
    }
}

उपरोक्त Student Data ऑब्जेक्ट के बारे में सूचित करता है।

ऐप चलाएं

मान लें कि आपने अपना वास्तविक Android मोबाइल डिवाइस कंप्यूटर से कनेक्ट किया है। Android Studio से ऐप चलाने के लिए, अपनी प्रोजेक्ट की एक्टिविटी फ़ाइलों में से एक खोलें और टूलबार से Run आइकन पर क्लिक करें। अपने मोबाइल डिवाइस को विकल्प के रूप में चुनें और फिर अपना मोबाइल डिवाइस जांचें जो डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा:

GridLayoutManager के साथ RecyclerView का उपयोग करके सरल Android ग्रिड उदाहरण

  1. Android में SearchView से RecyclerView कैसे फ़िल्टर करें? Android में SearchView से RecyclerView कैसे फ़िल्टर करें?

    Android में SearchView से RecyclerView फ़िल्टर करना यह ट्यूटोरियल दिखाता है कि कैसे RecyclerView में SearchView का उपयोग करके रियल-टाइम फ़िल्टरिंग इम्प्लीमेंट की जाती है, Filterable इंटरफेस और कस्टम एडाप्टर के साथ। चरण 1: प्रोजेक्ट और निर्भरताएं Android Studio में नया प्रोजेक्ट बनाएं। RecyclerView

  1. Android में डेटाबेस के साथ RecyclerView का उपयोग कैसे करें? Android में डेटाबेस के साथ RecyclerView का उपयोग कैसे करें?

    Android में SQLite डेटाबेस के साथ RecyclerView इम्प्लीमेंटेशन यह ट्यूटोरियल दिखाता है कि कैसे Room Database (आधुनिक) या SQLiteOpenHelper (लीगेसी) के साथ RecyclerView को जोड़ा जाता है, CRUD ऑपरेशन्स (बनाएं, पढ़ें, अपडेट करें, हटाएं) के साथ। आधुनिक दृष्टिकोण: Room Database (अनुशंसित) चरण 1: निर्भरता

  1. Android में RecyclerView से एंडलेस/इनफिनिट स्क्रॉलिंग लिस्ट कैसे बनाएं? Android में RecyclerView से एंडलेस/इनफिनिट स्क्रॉलिंग लिस्ट कैसे बनाएं?

    परिचय यह ट्यूटोरियल दिखाता है कि RecyclerView में एंडलेस स्क्रॉलिंग (पेजिनेशन) कैसे इम्प्लीमेंट करें। जब उपयोगकर्ता सूची के अंत तक पहुंचता है, तो अगला पेज ऑटोमैटिकली लोड होता है। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं और डिपेंडेंसी जोड़ें Android Studio में File → New Project से नया प्रोजेक्ट बनाएं