Προωθημένο

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

0
3

অ্যান্ড্রয়েড লিস্ট ভিউ – 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);


    }


}

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

Αναζήτηση
Κατηγορίες
Διαβάζω περισσότερα
Nulled
Moto G17 G77 আর Edge 70 Fusion এর ধামাকা! | Techtunes | টেকটিউনস
ড্রপবক্স – সিংক্রোনাইজিং স্টোরিং শেয়ারিং এর নতুন মাইলফলক দুঃসাহসী টিনটিন
από Nettumi 2026-09-21 05:28:49 0 33
Tech
কখনো টাকার জন্য কাজ করিনি : স্টিভ জবস | Techtunes | টেকটিউনস
মোবাইলের মাধ্যমে চ্যাট করার কিছু দারুণ সফটওয়্যার মো. আমিনুল ইসলাম সজীব
από Nettumi 2026-09-26 11:49:00 0 52
Nulled
Piotnet Addons for Elementor Pro v7.1.7 Nulled Plugin
Piotnet Addons for Elementor Pro v7.1.7 Nulled Plugin Free Download. More advanced features for...
από Nettumi 2026-09-18 03:23:03 0 39
Tech
Dockio সাইট হতে যে ভাবে Earn করবেন? প্রতি লিংক শেয়ার ও রেফারেল হতে পাবেন ৩ ডলার | Techtunes | টেকটিউনস
!!বাঙ্গালী হইয়া জন্মাইছেন আবার নেটও নিছেন অথচ Paltalk ব্যবহার করেন নাই তা হইতে পারে না!! ফয়সল
από Nettumi 2026-09-25 04:00:13 0 30
Nulled
ছবির রেজোল্যুশন Resolution নিয়ে আর চিন্তা নয়! ImgUpscaler AI - দিচ্ছে দুর্দান্ত সমাধান! | Techtunes | টেকটিউনস
চোখ ধাঁধাঁনো যে সকল প্রযুক্তি দেখবেন ২০২০ টোকিও অলেম্পিকে। আবদুল্লাহ্ আল মামুন
από Nettumi 2026-09-21 05:30:44 0 58
‎ ‎ ‎
Nettumi https://nettumi.com