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

অ্যান্ড্রয়েড ListView-এ স্ট্রিং ও অন্যান্য ডেটা টাইপ যোগ করার পদ্ধতি

ArrayAdapter ও জেনেরিক টাইপ

ArrayAdapter সাধারণত ArrayAdapter<String> হিসেবে ব্যবহার করা হয়, যা শুধু স্ট্রিং ধারণ করতে পারে। যদি আপনি বিভিন্ন ডেটা টাইপ (ইন্টিজার, ডাবল, অবজেক্ট ইত্যাদি) একসাথে ListView-এ দেখাতে চান, তবে সেগুলোকে স্ট্রিং-এ রূপান্তর করে Add করতে হবে বা কাস্টম অ্যাডাপ্টার তৈরি করতে হবে।

উদাহরণ: Collections.checkedCollection() ব্যবহার

এই উদাহরণে Collections.checkedCollection() ব্যবহার করে টাইপ-সেফ ArrayList তৈরি করা হয়েছে, যা রানটাইমে নন-স্ট্রিং অবজেক্ট যোগ করা রোধ করে।

ধাপ ১-২: প্রজেক্ট ও লেআউট

পূর্বের উদাহরণের মতো activity_main.xml ব্যবহার করুন।

ধাপ ৩: MainActivity.java - টাইপ সেফ ArrayList

package com.example.mixedtypeslistview;

import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class MainActivity extends AppCompatActivity {
    EditText name;
    ArrayAdapter<String> arrayAdapter;
    ArrayList<String> arrayList;
    Set<String> nameSet = new HashSet<>();
    ListView listView;

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

        arrayList = new ArrayList<>();
        arrayList.ensureCapacity(20);
        
        name = findViewById(R.id.name);
        listView = findViewById(R.id.listView);

        findViewById(R.id.refresh).setOnClickListener(v -> {
            if (arrayAdapter != null) {
                arrayAdapter.notifyDataSetChanged();
                listView.invalidateViews();
                listView.refreshDrawableState();
            }
        });

        findViewById(R.id.save).setOnClickListener(v -> {
            String inputName = name.getText().toString().trim();
            if (!inputName.isEmpty()) {
                nameSet.add(inputName);
                arrayList.clear();
                
                if (arrayList.isEmpty()) {
                    arrayList.addAll(nameSet);
                    
                    // টাইপ-সেফ কলেকশন তৈরি: শুধু String অনুমোদন করবে
                    // রানটাইমে অন্য টাইপ যোগ করলে ClassCastException থ্রো করবে
                    Collections.checkedCollection(arrayList, String.class);
                    
                    arrayList.trimToSize();
                    arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
                    listView.setAdapter(arrayAdapter);
                } else {
                    listView.setVisibility(View.GONE);
                }
                Toast.makeText(this, "সংরক্ষণ সফল", Toast.LENGTH_LONG).show();
            } else {
                name.setError("নাম লিখুন");
            }
        });
    }
}

বিভিন্ন ডেটা টাইপ ListView-এ দেখানোর পদ্ধতিসমূহ

পদ্ধতি ১: স্ট্রিং-এ রূপান্তর (সহজ)

ArrayList<String> list = new ArrayList<>();
list.add("নাম: " + "রহিম");
list.add("বয়স: " + 25);        // ইন্টিজার → স্ট্রিং
list.add("বেতন: " + 25000.50); // ডাবল → স্ট্রিং
list.add("সক্রিয়: " + true);    // বুলিয়ান → স্ট্রিং

পদ্ধতি ২: কাস্টম অবজেক্ট ও কাস্টম অ্যাডাপ্টার (প্রফেশনাল)

// মডেল ক্লাস
public class Employee {
    String name;
    int age;
    double salary;
    boolean active;
    
    // কনস্ট্রাক্টর, গেটার, সেটার
    @Override
    public String toString() {
        return name + " | " + age + " | " + salary + " | " + (active ? "হ্যাঁ" : "না");
    }
}

// কাস্টম অ্যাডাপ্টার
public class EmployeeAdapter extends ArrayAdapter<Employee> {
    // getView() ওভাররাইড করে কাস্টম লেআউট বাঁধুন
}

পদ্ধতি ৩: Map<String, Object> ব্যবহার করে

List<Map<String, Object>> data = new ArrayList<>();
Map<String, Object> item = new HashMap<>();
item.put("name", "রহিম");
item.put("age", 25);
item.put("salary", 25000.50);
data.add(item);
// SimpleAdapter ব্যবহার করুন

চলাচল ও ফলাফল

অ্যাপ রান করুন। নাম হিসেবে স্ট্রিং বা সংখ্যা লিখে Save দিন। ListView-এ সব কিছু স্ট্রিং আকারে দেখাবে। checkedCollection এর কারণে আপনি প্রোগ্রাম্যাটিক্যালি ইন্টিজার যোগ করলে ক্র্যাশ করবে।

অ্যান্ড্রয়েড ListView-এ স্ট্রিং ও অন্যান্য ডেটা টাইপ যোগ করার পদ্ধতি

ফলাফলে স্ট্রিং এবং ইন্টিজার মিশ্রিত ডেটা ListView-এ দেখানো হয়েছে।

  1. অ্যান্ড্রয়েড ListView-এ ফুটার যোগ করার পদ্ধতি

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

  3. অ্যান্ড্রয়েড অ্যাপের SharedPreferences ডেটা মুছে ফেলার পদ্ধতি

  4. Android-এ ডাটাবেস থেকে CheckBox সহ ListView-এ ডেটা বাইন্ড করা