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

एंड्रॉइड में हॉरिजॉन्टल ListView (RecyclerView) कैसे बनाएं?

एंड्रॉइड में RecyclerView से हॉरिजॉन्टल सूची बनाना

यह उदाहरण दिखाता है कि `RecyclerView` और `LinearLayoutManager.HORIZONTAL` का उपयोग करके हॉरिजॉन्टल स्क्रॉलिंग सूची कैसे बनाई जाती है।

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

Android Studio में File → New Project चुनकर नया प्रोजेक्ट बनाएं।

चरण 2: निर्भरताएं

build.gradle (Module: app):

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

चरण 3: मुख्य लेआउट

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="wrap_content" />

</LinearLayout>

चरण 4: आइटम लेआउट (कार्ड व्यू)

res/layout/movie_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="250dp"
    android:layout_height="150dp"
    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: डेटा मॉडल

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;
    }

    public String getTitle() { return title; }
    public void setTitle(String title) { this.title = title; }
    public String getYear() { return year; }
    public void setYear(String year) { this.year = year; }
    public String getGenre() { return genre; }
    public void setGenre(String genre) { this.genre = genre; }
}

चरण 6: RecyclerView एडाप्टर

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 {
    private List 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 moviesList) {
        this.moviesList = moviesList;
    }

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

    @Override
    public void onBindViewHolder(@NonNull 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();
    }
}

चरण 7: MainActivity - सेटअप और डेटा

MainActivity.java:

package app.com.sample;

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

public class MainActivity extends AppCompatActivity {
    private List 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);
        layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(layoutManager);

        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(mAdapter);

        prepareMovieData();
    }

    private void prepareMovieData() {
        MovieModel movie = new MovieModel("Mad Max: Fury Road", "Action & Adventure", "2015");
        movieList.add(movie);
        
        movie = new MovieModel("Inside Out", "Animation, Kids & Family", "2015");
        movieList.add(movie);
        
        movie = new MovieModel("Star Wars: Episode VII", "Action", "2015");
        movieList.add(movie);
        
        movie = new MovieModel("Shaun the Sheep", "Animation", "2015");
        movieList.add(movie);
        
        movie = new MovieModel("The Martian", "Sci-Fi & Fantasy", "2015");
        movieList.add(movie);
        
        movie = new MovieModel("Mission: Impossible Rogue Nation", "Action", "2015");
        movieList.add(movie);
        
        movie = new MovieModel("Up", "Animation", "2009");
        movieList.add(movie);
        
        movie = new MovieModel("Star Trek", "Science Fiction", "2009");
        movieList.add(movie);
        
        movie = new MovieModel("The LEGO Movie", "Animation", "2014");
        movieList.add(movie);
        
        movie = new MovieModel("Iron Man", "Action & Adventure", "2008");
        movieList.add(movie);
        
        movie = new MovieModel("Aliens", "Science Fiction", "1986");
        movieList.add(movie);
        
        movie = new MovieModel("Chicken Run", "Animation", "2000");
        movieList.add(movie);
        
        movie = new MovieModel("Back to the Future", "Sci-Fi", "1985");
        movieList.add(movie);
        
        movie = new MovieModel("Raiders of the Lost Ark", "Action & Adventure", "1981");
        movieList.add(movie);
        
        movie = new MovieModel("Goldfinger", "Action & Adventure", "1965");
        movieList.add(movie);
        
        movie = new MovieModel("Guardians of the Galaxy", "Sci-Fi & Fantasy", "2014");
        movieList.add(movie);

        mAdapter.notifyDataSetChanged();
    }
}

चरण 8: Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

💡 उन्नत: स्नैप-टू-सेंटर (केंद्र में आइटम स्नैप करना)

// LinearSnapHelper - फ्लिंग के बाद निकटतम आइटम पर स्नैप करता है
SnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);

// या PagerSnapHelper - एक समय में एक पेज (ViewPager जैसा)
SnapHelper pagerSnapHelper = new PagerSnapHelper();
pagerSnapHelper.attachToRecyclerView(recyclerView);

ऐप चलाएं

डिवाइस कनेक्ट करें, Run पर क्लिक करें। फिल्मों की हॉरिजॉन्टल स्क्रॉलिंग सूची दिखाई देगी।

  1. एंड्रॉइड में कॉल कैसे करें एंड्रॉइड में कॉल कैसे करें

    एंड्रॉइड में फोन कॉल करना यह गाइड संपर्कों से नंबर चुनकर या मैन्युअल रूप से दर्ज करके फोन कॉल शुरू करने को कवर करता है, जिसमें रनटाइम CALL_PHONE परमिशन को सही ढंग से संभाला जाता है। अनुमतियां <uses-permission android:name=android.permission.CALL_PHONE /> <!-- संपर्क चुनने के लिए वैकल्पिक -

  1. Android ListView में फुटर (Footer) कैसे जोड़ें? Android ListView में फुटर (Footer) कैसे जोड़ें?

    Android ListView में कस्टम फुटर व्यू जोड़ना ListView के अंत में एक फुटर व्यू (जैसे सूची समाप्त संदेश) जोड़ने का तरीका सीखें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project से प्रोजेक्ट बनाएं। चरण 2: मेन लेआउट में ListView res/layout/activity_main.xml: <RelativeLayout xmlns:and

  1. एंड्रॉइड में बटन कैसे हटाएं या अदृश्य करें? एंड्रॉइड में बटन कैसे हटाएं या अदृश्य करें?

    View.VISIBLE, INVISIBLE, GONE के साथ बटन विजिबिलिटी कंट्रोल यह उदाहरण दर्शाता है कि setVisibility() का उपयोग करके बटन को अदृश्य (INVISIBLE) या पूरी तरह से हटाएं (GONE) कैसे करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में दो बटन res/layout/activity_mai