অ্যান্ড্রয়েড রিসাইকেল ভিউ 

Recycler ভিউ হচ্ছে একটা উইজেট, যেটা লিস্ট আকারে ডেটা দেখায়। নাম থেকেই বুঝা যাচ্ছে এটির কাজ কি। ডেটা দেখানোর জন্য সব গুলো ডেটা না লোড করে যতটুকু দেখানো দরকার, ততটুকু লোড করে। আর তাই এটা মেমরি ইফিশিয়েন্ট।

আমরা একটি প্রজেক্ট তৈরি করে নিব। এটি কিছুটা অ্যান্ড্রয়েড লিস্ট ভিউ – Android ListView
এর মত। আমরা একটি প্রজেক্ট তৈরি করে নিব। রিসাইকেল ভিউ ব্যবহার করার জন্য আমাদেরকে রিসাইকেল ভিউ সাপোর্ট লাইব্রেরি যুক্ত করতে হবে। তার জন্য App ডিরেক্টরির Gradle ফাইলে dependencies এর মধ্যে নিচের লাইনটি যুক্ত করবঃ

compile 'com.android.support:recyclerview-v7:24.1.1'

আমরা কেমন অ্যাপ তৈরি করতে যাচ্ছি, তার সম্পর্কে বলি। আমরা ফ্রেন্ড লিস্ট রাখার জন্য একটা অ্যাপ তৈরি করব। যেখানে নাম এবং ইমেইল দেখাবো। আর তার জন্য একটা নতুন লেআউট তৈরি করে নিব। যেমন friend_list.xml:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:padding="5dp"
        android:id="@+id/tvName" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/tvEmail"
        android:padding="5dp"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

activity_main.xml এ আমাদের একটি রিসাইকেল ভিউ যুক্ত করতে হবে। activity_main.xml{

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="me.jakir.recyclerviewdemo.MainActivity">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</RelativeLayout>

Friend দের নাম এবং ইমেইল রাখার জন্য একটা মডেল তৈরি করে নিব। Friend.java:


public class Friend {
    private String name;
    private String email;

    public Friend(String name, String email){
        this.name = name;
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

আমাদের একটা Adapter তৈরি করতে হবে। Adapter এর কাজ হচ্ছে ডেটা এবং ভিউ এর মধ্যে বন্ধন তৈরি করা। Adapter.java:

public class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder> {

    private List<Friend> friendList;

    // Constructor
    public Adapter(List<Friend> friendList) {
        this.friendList = friendList;
    }

    @Override
    public Adapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.friend_list, parent, false);

        return new MyViewHolder (itemView);
    }

    @Override
    public void onBindViewHolder(Adapter.MyViewHolder holder, int position) {

        Friend friend = friendList.get(position);
        holder.name.setText(friend.getName());
        holder.email.setText(friend.getEmail());

    }

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

    // View Holder Class

    public class MyViewHolder extends RecyclerView.ViewHolder {

        public TextView name, email;

        public MyViewHolder(View itemView) {
            super(itemView);

            name = (TextView) itemView.findViewById(R.id.tvName);
            email = (TextView) itemView.findViewById(R.id.tvEmail);
        }
    }
}

আমরা রিসাইকেল ভিউতে ডেটা দেখানোর জন্য একটা লিস্ট তৈরি করে নিব, এবং ঐ লিস্টে কিছু স্ট্যাটিক ডেটা সেট করব। রিয়েল অ্যাপে হয়তো এগুলো কোন ডেটাবেজ থেকে বা JSON থেকে নিয়ে কাজ করব। MainActivity.java তে Adapter এ ডেটা সোর্স উল্ল্যেখ করে দিব। MainActivity.java:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private List<Friend> friendList = new ArrayList<>();
    private RecyclerView recyclerView;
    private Adapter adapter;

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

        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);

        adapter = new Adapter(friendList);

        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());

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

        prepareFriends();
    }

    private void prepareFriends() {

        Friend friend;

        friend = new Friend("Rihan", "[email protected]");
        friendList.add(friend);

        friend = new Friend("Sijan", "[email protected]");
        friendList.add(friend);

        friend = new Friend("sifat", "[email protected]");
        friendList.add(friend);

    }
}

অ্যাপটি রান করলে আমরা একটা লিস্ট দেখতে পাবো। যা রিসাইকেল ভিউ ব্যবহার করে তৈরি।

 

অ্যান্ড্রয়েড নিয়ে অন্যান্য সব লেখা পাওয়া যাবে অ্যান্ড্রয়েড অ্যাপ ডেভেলপমেন্ট পেইজে। প্রজেক্টের সোর্স কোড পাওয়া যাবে গিট রিপোজিটোরিতে। 

Leave a Reply