কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে হরিজন্টাল (Horizontal) ListView তৈরি করা (RecyclerView)

RecyclerView + LinearLayoutManager.HORIZONTAL দিয়ে হরিজন্টাল তালিকা

পুরানো HorizontalListView বা ListView পরিবর্তে আধুনিক পদ্ধতিতে RecyclerView ব্যবহার করে হরিজন্টাল স্ক্রোলযোগ্য তালিকা তৈরি করা হয়। CardView দিয়ে কার্ড স্টাইল দেয়া হয়েছে।

ধাপ ১: প্রজেক্ট তৈরি করুন

Android Studio-তে নতুন প্রজেক্ট শুরু করুন।

ধাপ ২: Gradle ডিপেন্ডেন্সি

implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.cardview:cardview:1.0.0'

ধাপ ৩: লেআউট (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>

ধাপ ৪: আইটেম লেআউট (res/layout/movie_list.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="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_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>

ধাপ ৫: মডেল (MovieModel.java)

package com.example.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;
    }
    // Getter/Setter...
    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; }
}

ধাপ ৬: অ্যাডাপ্টার (MoviesAdapter.java)

package com.example.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 view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.movie_list, parent, false);
        return new MyViewHolder(view);
    }

    @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();
    }
}

ধাপ ৭: MainActivity.java - সেটআপ

package com.example.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 movieList = new ArrayList<>();
    private MoviesAdapter adapter;

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

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

        // হরিজন্টাল লেআউট ম্যানেজার
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(layoutManager);

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

        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"));
        movieList.add(new MovieModel("Shaun the Sheep", "Animation", "2015"));
        movieList.add(new MovieModel("The Martian", "Sci-Fi & Fantasy", "2015"));
        // আরও যোগ করুন...
        adapter.notifyDataSetChanged();
    }
}

ফলাফল

হরিজন্টাল স্ক্রোলযোগ্য কার্ড তালিকা দেখাবে, প্রতিটি কার্ডে মুভির নাম, জ্যানর, এবং বছর।

অ্যান্ড্রয়েডে হরিজন্টাল (Horizontal) ListView তৈরি করা (RecyclerView) অ্যান্ড্রয়েডে হরিজন্টাল (Horizontal) ListView তৈরি করা (RecyclerView)
RecyclerView হরিজন্টাল লিস্ট (CardView আইটেম)
  1. অ্যান্ড্রয়েডে ListView ডাইনামিকভাবে আপডেট করার পদ্ধতি

  2. অ্যান্ড্রয়েডে ফোন কল করার পদ্ধতি

  3. অ্যান্ড্রয়েড ListView-এ ফুটার যোগ করার পদ্ধতি

  4. অ্যান্ড্রয়েডে বাটন অদৃশ্য বা মুছে ফেলার পদ্ধতি