परिचय
उदाहरण में जाने से पहले, हमें पता होना चाहिए कि Android में RecyclerView क्या है। RecyclerView ListView का अधिक उन्नत संस्करण है और यह View Holder डिज़ाइन पैटर्न पर आधारित काम करता है। RecyclerView का उपयोग करके हम ग्रिड और आइटम की सूची दिखा सकते हैं।
यह उदाहरण एक सुंदर छात्र रिकॉर्ड ऐप बनाकर दर्शाता है जो छात्र का नाम और उम्र प्रदर्शित करता है, और LinearLayoutManager के साथ RecyclerView को शीर्ष पर कैसे स्क्रॉल करें।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2: build.gradle में RecyclerView और CardView डिपेंडेंसी जोड़ें
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:cardview-v7:28.0.0'
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"?>
<android.support.design.widget.CoordinatorLayout
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"
android:fitsSystemWindows = "true"
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 = "horizontal" />
<android.support.design.widget.FloatingActionButton
android:id = "@+id/top"
app:backgroundTint = "#FFFF00"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_gravity = "bottom|end"
android:src = "@android:drawable/arrow_up_float" />
</android.support.design.widget.CoordinatorLayout>
उपरोक्त कोड में हमने RecyclerView को रिलेटिव पैरेंट लेआउट के रूप में विंडो मैनेजर में जोड़ा है और FloatingActionButton जोड़ा है। FloatingActionButton CoordinatorLayout को सपोर्ट करता है। इसलिए हमने पैरेंट लेआउट CoordinatorLayout का उपयोग किया है। जब आप FloatingActionButton पर क्लिक करते हैं, तो यह शीर्ष स्थिति पर स्क्रॉल करेगा।
चरण 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.design.widget.FloatingActionButton;
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 android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
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);
FloatingActionButton moveTop = findViewById(R.id.top);
recyclerView = findViewById(R.id.recycler_view);
studentAdapter = new StudentAdapter(studentDataList, MainActivity.this);
RecyclerView.LayoutManager manager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(studentAdapter);
StudentDataPrepare();
moveTop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recyclerView.smoothScrollToPosition(0);
}
});
}
@RequiresApi(api = Build.VERSION_CODES.N)
private void StudentDataPrepare() {
StudentData data = new StudentData("sai", 25);
studentDataList.add(data);
data = new StudentData("sai raj", 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 में छात्र का नाम और उम्र होती है।
हम शीर्ष (0th) स्थिति पर स्क्रॉल करने के लिए smoothScrollToPosition() का उपयोग कर रहे हैं, हम अपनी आवश्यकता के अनुसार किसी भी स्थिति को असाइन कर सकते हैं। इस उदाहरण में, यह नीचे दिखाए अनुसार शून्य (शीर्ष) स्थिति पर स्क्रॉल करेगा:
moveTop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recyclerView.smoothScrollToPosition(0);
}
});
चरण 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);
}
}
}
चरण 6: student_list_row.xml
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.v7.widget.CardView xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:card_view = "https://schemas.android.com/apk/res-auto"
android:layout_width = "match_parent"
card_view:cardCornerRadius = "4dp"
android:id = "@+id/card_view"
android:layout_margin = "10dp"
android:layout_height = "200dp">
<LinearLayout
android:id = "@+id/parent"
android:layout_gravity = "center"
android:layout_width = "match_parent"
android:orientation = "vertical"
android:gravity = "center"
android:layout_height = "match_parent">
<TextView
android:id = "@+id/name"
android:layout_width = "wrap_content"
android:gravity = "center"
android:textSize = "25sp"
android:textColor = "#FFF"
android:layout_height = "wrap_content" />
<TextView
android:id = "@+id/age"
android:layout_width = "wrap_content"
android:gravity = "center"
android:textSize = "25sp"
android:textColor = "#FFF"
android:layout_height = "wrap_content" />
</LinearLayout>
</android.support.v7.widget.CardView>
चरण 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;
}
}
ऐप चलाएं
मान लें कि आपने अपना वास्तविक Android मोबाइल डिवाइस कंप्यूटर से कनेक्ट किया है। Android Studio से ऐप चलाने के लिए, अपनी प्रोजेक्ट की एक्टिविटी फ़ाइलों में से एक खोलें और टूलबार से Run आइकन पर क्लिक करें। अपने मोबाइल डिवाइस को विकल्प के रूप में चुनें और फिर अपना मोबाइल डिवाइस जांचें जो डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा:

अब पीले बटन पर क्लिक करें RecyclerView को शीर्ष पर स्क्रॉल करने के लिए, यह नीचे दिखाए अनुसार परिणाम दिखाएगा:
