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

Android ऐप में RecyclerView के साथ काम करना

RecyclerView आधुनिक, लचीला और कुशल सूची प्रदर्शन घटक है। यह ViewHolder पैटर्न और लेआउट मैनेजर का उपयोग करता है।

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

Android Studio में नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट में RecyclerView

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:id="@+id/rlMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    android:orientation="vertical">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

चरण 3: डेटा मॉडल

src/MovieModel.java:

package app.com.sample;

public class MovieModel {
    private String title, genre, year;

    public MovieModel() {}
    public MovieModel(String title, String genre, String year) {
        this.title = title;
        this.genre = genre;
        this.year = year;
    }
    // Getters और Setters
    public String getTitle() { return title; }
    public void setTitle(String title) { this.title = title; }
    public String getGenre() { return genre; }
    public void setGenre(String genre) { this.genre = genre; }
    public String getYear() { return year; }
    public void setYear(String year) { this.year = year; }
}

चरण 4: आइटम लेआउट

res/layout/movies_list.xml (CardView के साथ):

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_margin="8dp">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="8dp">
        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_toStartOf="@id/year"
            android:textColor="#222222"
            android:textSize="16sp"
            android:textStyle="bold" />
        <TextView
            android:id="@+id/year"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:textColor="#999999" />
        <TextView
            android:id="@+id/genre"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true" />
    </RelativeLayout>
</androidx.cardview.widget.CardView>

चरण 5: एडाप्टर

src/MoviesAdapter.java:

package app.com.sample;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;

public class MoviesAdapter extends RecyclerView.Adapter<MoviesAdapter.MyViewHolder> {
    private List<MovieModel> moviesList;

    static class MyViewHolder extends RecyclerView.ViewHolder {
        TextView title, year, genre;
        MyViewHolder(View view) {
            super(view);
            title = view.findViewById(R.id.title);
            genre = view.findViewById(R.id.genre);
            year = view.findViewById(R.id.year);
        }
    }

    public MoviesAdapter(List<MovieModel> moviesList) {
        this.moviesList = moviesList;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.movies_list, parent, false);
        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        MovieModel movie = moviesList.get(position);
        holder.title.setText(movie.getTitle());
        holder.genre.setText(movie.getGenre());
        holder.year.setText(movie.getYear());
    }

    @Override
    public int getItemCount() {
        return moviesList.size();
    }
}

चरण 6: MainActivity सेटअप

src/MainActivity.java:

package app.com.sample;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private List<MovieModel> movieList = new ArrayList<>();
    private MoviesAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView recyclerView = findViewById(R.id.recyclerView);
        mAdapter = new MoviesAdapter(movieList);

        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(mAdapter);

        prepareMovieData();
    }

    private void prepareMovieData() {
        movieList.add(new MovieModel("Mad Max: Fury Road", "Action & Adventure", "2015"));
        movieList.add(new MovieModel("Inside Out", "Animation, Kids & Family", "2015"));
        movieList.add(new MovieModel("Star Wars: Episode VII", "Action", "2015"));
        // ... और फिल्में जोड़ें
        mAdapter.notifyDataSetChanged();
    }
}

निर्भरताएं (build.gradle)

dependencies {
    implementation 'androidx.recyclerview:recyclerview:1.3.0'
    implementation 'androidx.cardview:cardview:1.0.0'
}

उन्नत विशेषताएं

  • GridLayoutManager - ग्रिड लेआउट के लिए
  • StaggeredGridLayoutManager - मेसनरी लेआउट
  • ItemTouchHelper - स्वाइप टू डिस्मिस, ड्रैग एंड ड्रॉप
  • DiffUtil - कुशल सूची अपडेट
  • Paging 3 - बड़े डेटासेट के लिए पेजिंग
  1. एंड्रॉयड पर जीमेल ऐप की समस्याएं ठीक करें: क्विक फिक्स और टिप्स एंड्रॉयड पर जीमेल ऐप की समस्याएं ठीक करें: क्विक फिक्स और टिप्स

    जीमेल एंड्रॉयड यूजर्स की पहली पसंद है। यह गूगल ड्राइव, फोटोज, प्ले गेम्स आदि से लिंक होता है। लेकिन ऐप में समस्याएं आ सकती हैं: क्रैश होना, सिंक न होना, अकाउंट एक्सेस न होना, टू-स्टेप वेरिफिकेशन फेल होना, मैसेज न मिलना, ईमेल न भेजना/पाना, आउटबॉक्स में अटकना, स्लो चलना। इस लेख में हर समस्या का समाधान

  1. Android मैसेजिंग ऐप समस्याओं को हल करें: त्वरित सुधार गाइड Android मैसेजिंग ऐप समस्याओं को हल करें: त्वरित सुधार गाइड

    एक समय था जब लोग संकेतों, चित्रों, कबूतरों, पत्रों, टेलीग्राम और डाक कार्ड के माध्यम से संवाद करते थे। इसमें बहुत समय लगता था, और उन्हें संदेश प्राप्त करने के लिए बहुत लंबा इंतजार करना पड़ता था। प्रौद्योगिकी के आधुनिक युग में, सूचना का हर टुकड़ा दुनिया के दूसरे छोर पर बैठे लोगों तक तुरंत पहुंचाया जा

  1. एंड्रॉइड पर Twitch ऐप समस्याओं का समाधान: त्वरित सुधार और समाधान एंड्रॉइड पर Twitch ऐप समस्याओं का समाधान: त्वरित सुधार और समाधान

    एंड्रॉइड पर Twitch ऐप काम न करने की समस्या कैसे ठीक करें इस समस्या के होने के कई कारण हैं: पुराना Twitch ऐप फोन पर गलत दिनांक और समय सेटिंग्स बाधित Twitch सर्वर करप्ट ऐप डेटा और कैश ऑटो स्ट्रीमिंग क्वालिटी मोड में ग्लिच तो, आइए अब उन समाधानों पर एक नज़र डालते हैं जिनसे आप Twitch ऐप काम न करने की ए