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); } }
অ্যাপটি রান করলে আমরা একটা লিস্ট দেখতে পাবো। যা রিসাইকেল ভিউ ব্যবহার করে তৈরি।