Sponsor

অ্যান্ড্রয়েড অবজেক্ট লিস্ট থেকে লিস্টভিউ ও কাস্টম অ্যাডাপ্টার

0
2

অ্যান্ড্রয়েড লিস্ট ভিউ – Android ListView লেখাটিতে আমরা দেখেছি কিভাবে  লিস্ট ভিউ নিয়ে কাজ করা যায়। যেখানে আমরা সিম্পল অ্যারে নিয়ে কাজ করেছি। এখানে আমরা দেখব কিভাবে অবজেক্ট লিস্ট নিয়ে কাজ করা যায়। যেমন আমরা একটা শপিং লিস্ট তৈরি করতে চাই। শপিং লিস্ট আইটেমে অনেক গুলো অ্যাট্রিভিউট থাকতে পারে। আমরা সিম্পল একটা শপিং লিস্ট POJO ক্লাস তৈরি করে নেই। পরবর্তীতে এটিকে বর্ধিত করে যে কোন কিছুই করা যাবে। ShoppingList.java:


public class ShoppingList {
    String title;
    boolean status;

    public ShoppingList(String title, boolean status) {
        this.title = title;
        this.status = status;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

}

আমাদের অ্যাপ দেখতে নিচের মত হবেঃ

এ জন্য আমরা নিচের মত করে লেয়াউট সাজাতে পারিঃ

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">

    <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" android:textSize="18sp" android:text="Awesome Shopping list!" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" />

    <ListView android:id="@+id/list_view" android:layout_width="0dp" android:layout_height="439dp" android:layout_marginEnd="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="8dp" android:layout_marginTop="9dp" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/text" />
</android.support.constraint.ConstraintLayout>

লিস্টভিউর আইটেমের জন্য লেয়াউট, যেখানে একটা চেকবক্স এবং একটা টেক্সট ভিউ রয়েছেঃ

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content">
    <CheckBox android:id="@+id/checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="false" android:focusableInTouchMode="false" />
    <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" android:text="Title">
    </TextView>
    
</LinearLayout>

আমরা যদি অ্যারে নিয়ে কাজ করতাম, তাহলে লিস্টভিউ এর জন্য অ্যারে এডাপ্টার দিয়েই কাজ হত। কিন্তু আমরা এখন কাজ করব অবজেক্ট লিস্ট নিয়ে। তাই আমাদের নিজস্ব এডাপ্টার তৈরি করে নিতে হবে। ShoppingListAdapter:

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.TextView;

import java.util.ArrayList;

public class ShoppingListAdapter extends ArrayAdapter<ShoppingList> {
    private ArrayList<ShoppingList> shoppingLists;

    public ShoppingListAdapter(Context context, int iewResourceId,
                               ArrayList<ShoppingList> shoppingLists) {
        super(context, iewResourceId, shoppingLists);

        this.shoppingLists = new ArrayList<ShoppingList>();
        this.shoppingLists.addAll(shoppingLists);
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder = null;


        if (convertView == null) {
            LayoutInflater vi = ((Activity) getContext()).getLayoutInflater();

            convertView = vi.inflate(R.layout.list_item, null);

            holder = new ViewHolder();
            holder.title = (TextView) convertView.findViewById(R.id.title);
            holder.status = (CheckBox) convertView.findViewById(R.id.checkbox);
            convertView.setTag(holder);


        } else {
            holder = (ViewHolder) convertView.getTag();
        }


        ShoppingList shoppingList = shoppingLists.get(position);

        holder.title.setText(shoppingList.getTitle());
        holder.status.setChecked(shoppingList.isStatus());

        return convertView;

    }


    private class ViewHolder {
        TextView title;
        CheckBox status;
    }


}

আমাদের অ্যাপের মেইন এক্টিভিটিতে প্রথমে আমরা একটা ডামি শপিং লিস্ট তৈরি করে নিব। তারপর আমাদের অ্যাডেপ্টারে এই লিস্টটা পাস করে দিব। কোন ভিউতে লিস্টটা দেখাতে হবে, তা বলে দেওয়ার পর আমাদের শপিং লিস্ট দেখাবেঃ

private void populateListView() {
 
 
       ShoppingList shopping1 = new ShoppingList("Buy Coffee", false);
       shoppingLists.add(shopping1);
 
       ShoppingList shopping2 = new ShoppingList("Buy Milk", true);
       shoppingLists.add(shopping2);
 
       adapter = new ShoppingListAdapter(this, R.layout.list_item, shoppingLists);
       list = (ListView) findViewById(R.id.list_view);
       list.setAdapter(adapter);   
 
   }

সম্পূর্ণ 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 {

    ArrayList<ShoppingList> shoppingLists = new ArrayList<ShoppingList>();
    ListView list;
    ShoppingListAdapter adapter;




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

        populateListView();
    }

    private void populateListView() {

        ShoppingList shopping1 = new ShoppingList("Buy Coffee", false);
        shoppingLists.add(shopping1);

        ShoppingList shopping2 = new ShoppingList("Buy Milk", true);
        shoppingLists.add(shopping2);

        adapter = new ShoppingListAdapter(this, R.layout.list_item, shoppingLists);
        list = (ListView) findViewById(R.id.list_view);
        list.setAdapter(adapter);


    }


}

লিস্ট ভিউ নিয়ে আরেকটা লেখাঃ অ্যান্ড্রয়েড লিস্টভিউ তে চেকবক্স যুক্ত করা।  এই লেখার সোর্স কোড গুলো।

Căutare
Categorii
Citeste mai mult
Tech
সুইফট ইউআই - টেক্সট
আমরা একটা আইওএস প্রজেক্ট তৈরি করে নিব। প্রজেক্টটি Xcode এ ওপেন করলে দেখব project_nameApp.swift...
By Nettumi 2026-09-30 18:40:00 0 2
Tech
পারসোনাল ব্র্যান্ডিং কেন দরকার?
এন্টারপ্রেনার হই অথবা জব করি, পারসোনাল ব্র্যান্ডিং সবার জন্যই গুরুত্বপূর্ণ। অন্যরা কিভাবে জাজ...
By Nettumi 2026-09-30 18:40:00 0 2
Hacking Course
SuperGrok আনলিমিটেড ট্রায়াল [Bin Method]
হ্যালো কাছের মানুষজন? ব্র্যান্ড নিউ পোস্টে আপনাকে স্বাগতম। অনেকদিন পর প্রিয় TrickBD তে পোস্ট করা।...
By Nettumi 2026-09-25 16:53:51 0 15
Nulled
Blog Designer PRO for WordPress Plugin v3.4.5 Free
Blog Designer PRO for WordPress Plugin v3.4.5 Free Download. Blog Designer is an Effective and...
By Nettumi 2026-09-18 03:23:50 0 46
Nulled
Dhaka Bank, BB sign Tk2,000cr pre-finance scheme for leather, leather goods industry
By Nettumi 2026-09-23 17:28:18 0 31
‎ ‎ ‎
Nettumi https://nettumi.com