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

Android-এ কাস্টম ListView তৈরি করার পদ্ধতি

ListView উদাহরণের আগে ListView সম্পর্কে জানুন: ListView হলো ArrayList, List বা ডাটাবেস থেকে কালেক্ট করা আইটেমের সমষ্টি। সাধারণত ভার্টিক্যাল ফরম্যাটে আইটেম কালেকশন, স্ক্রোল আপ/ডাউন এবং ক্লিকেবল।

কাস্টম ListView কী?

কাস্টম ListView কাজ করে কাস্টম Adapter-এর ভিত্তিতে। এই কাস্টম অ্যাডাপ্টারে কাস্টম অবজেক্ট পাস করা যায়। আমরা সাবজেক্ট ডেটা ListView-এ পাস করছি।

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

File → New Project → ডিটেইল পূরণ করুন।

ধাপ ২: res/layout/activity_main.xml-এ ListView যোগ করুন

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <ListView
            android:id="@+id/list"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:divider="#000"
            android:dividerHeight="1dp"
            android:footerDividersEnabled="false"
            android:headerDividersEnabled="false"/>
    </LinearLayout>
</android.support.constraint.ConstraintLayout>

ধাপ ৩: src/MainActivity.java-এ কোড যোগ করুন

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ListView list = findViewById(R.id.list);
        ArrayList<SubjectData> arrayList = new ArrayList<SubjectData>();
        arrayList.add(new SubjectData("JAVA", "https://www.tutorialspoint.com/java/", "https://www.tutorialspoint.com/java/images/java-mini-logo.jpg"));
        arrayList.add(new SubjectData("Python", "https://www.tutorialspoint.com/python/", "https://www.tutorialspoint.com/python/images/python-mini.jpg"));
        arrayList.add(new SubjectData("Javascript", "https://www.tutorialspoint.com/javascript/", "https://www.tutorialspoint.com/javascript/images/javascript-mini-logo.jpg"));
        arrayList.add(new SubjectData("Cprogramming", "https://www.tutorialspoint.com/cprogramming/", "https://www.tutorialspoint.com/cprogramming/images/c-mini-logo.jpg"));
        arrayList.add(new SubjectData("Cplusplus", "https://www.tutorialspoint.com/cplusplus/", "https://www.tutorialspoint.com/cplusplus/images/cpp-mini-logo.jpg"));
        arrayList.add(new SubjectData("Android", "https://www.tutorialspoint.com/android/", "https://www.tutorialspoint.com/android/images/android-mini-logo.jpg"));
        CustomAdapter customAdapter = new CustomAdapter(this, arrayList);
        list.setAdapter(customAdapter);
    }
}

ধাপ ৪: CustomAdapter ক্লাস তৈরি করুন (src/CustomAdapter.java)

import android.content.Context;
import android.database.DataSetObserver;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;

class CustomAdapter implements ListAdapter {
    ArrayList<SubjectData> arrayList;
    Context context;
    public CustomAdapter(Context context, ArrayList<SubjectData> arrayList) {
        this.arrayList = arrayList;
        this.context = context;
    }
    @Override public boolean areAllItemsEnabled() { return false; }
    @Override public boolean isEnabled(int position) { return true; }
    @Override public void registerDataSetObserver(DataSetObserver observer) { }
    @Override public void unregisterDataSetObserver(DataSetObserver observer) { }
    @Override public int getCount() { return arrayList.size(); }
    @Override public Object getItem(int position) { return position; }
    @Override public long getItemId(int position) { return position; }
    @Override public boolean hasStableIds() { return false; }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        SubjectData subjectData = arrayList.get(position);
        if (convertView == null) {
            LayoutInflater layoutInflater = LayoutInflater.from(context);
            convertView = layoutInflater.inflate(R.layout.list_row, null);
            convertView.setOnClickListener(new View.OnClickListener() {
                @Override public void onClick(View v) { }
            });
            TextView title = convertView.findViewById(R.id.title);
            ImageView image = convertView.findViewById(R.id.list_image);
            title.setText(subjectData.SubjectName);
            Picasso.with(context)
                .load(subjectData.Image)
                .into(image);
        }
        return convertView;
    }
    @Override public int getItemViewType(int position) { return position; }
    @Override public int getViewTypeCount() { return arrayList.size(); }
    @Override public boolean isEmpty() { return false; }
}

ধাপ ৫: SubjectData ক্লাস তৈরি করুন (src/SubjectData.java)

class SubjectData {
    String SubjectName;
    String Link;
    String Image;
    public SubjectData(String subjectName, String link, String image) {
        this.SubjectName = subjectName;
        this.Link = link;
        this.Image = image;
    }
}

ধাপ ৬: Picasso লাইব্রেরি ব্যবহার করে ইন্টারনেট থেকে ইমেজ লোড

Picasso.with(context)
    .load(subjectData.Image)
    .into(image);

ধাপ ৭: Gradle-এ Picasso লাইব্রেরি যোগ করুন

dependencies {
    implementation 'com.squareup.picasso:picasso:2.5.1'
    // অন্যান্য ডিপেনডেন্সি...
}

ধাপ ৮: Manifest-এ ইন্টারনেট পারমিশন দিন

<uses-permission android:name="android.permission.INTERNET"/>

অ্যাপ্লিকেশন রান করুন।

Android-এ কাস্টম ListView তৈরি করার পদ্ধতি

  1. অ্যান্ড্রয়েডে ListView-এর জন্য কাস্টম অ্যাডাপ্টার তৈরির পদ্ধতি

  2. অ্যান্ড্রয়েড অ্যাপে কাস্টম অ্যালার্ট ডায়ালগ তৈরির পদ্ধতি

  3. অ্যান্ড্রয়েডে কাস্টম রেটিংবার (RatingBar) তৈরি করা

  4. Android-এ মাল্টিলেভেল ListView (ExpandableListView) তৈরির পদ্ধতি