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

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

অ্যান্ড্রয়েডে ডাটাবেস থেকে CheckBox যুক্ত ListView-এ ডেটা বাইন্ড করা

এই উদাহরণটি দেখায় কিভাবে একটি কাস্টম অ্যাডাপ্টার ব্যবহার করে ডেটা মডেল (নাম এবং চেক স্টেট) একটি ListView-এ CheckBox সহ প্রদর্শন করা যায়। এখানে ডেমোর জন্য ডাটাবেসের পরিবর্তে ArrayList ব্যবহার করা হয়েছে।

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

Android Studio-তে File → New Project এ যান এবং একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: মেইন লেআউট (activity_main.xml)

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

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>

ধাপ ৩: রো আইটেম লেআউট (row_item.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp">

    <TextView
        android:id="@+id/txtName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:textSize="16sp" />

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />

</RelativeLayout>

ধাপ ৪: DataModel.java (ডেটা মডেল ক্লাস)

package com.app.sample;

public class DataModel {
    public String name;
    public boolean checked;

    public DataModel(String name, boolean checked) {
        this.name = name;
        this.checked = checked;
    }
}

ধাপ ৫: CustomAdapter.java (কাস্টম অ্যাডাপ্টার)

package com.app.sample;

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 androidx.annotation.NonNull;
import java.util.ArrayList;

public class CustomAdapter extends ArrayAdapter<DataModel> {

    private ArrayList<DataModel> dataSet;
    private Context mContext;

    // ViewHolder প্যাটার্ন
    private static class ViewHolder {
        TextView txtName;
        CheckBox checkBox;
    }

    public CustomAdapter(ArrayList<DataModel> data, Context context) {
        super(context, R.layout.row_item, data);
        this.dataSet = data;
        this.mContext = context;
    }

    @Override
    public int getCount() {
        return dataSet.size();
    }

    @Override
    public DataModel getItem(int position) {
        return dataSet.get(position);
    }

    @Override
    public View getView(int position, View convertView, @NonNull ViewGroup parent) {
        ViewHolder viewHolder;
        View result;

        if (convertView == null) {
            viewHolder = new ViewHolder();
            convertView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.row_item, parent, false);
            viewHolder.txtName = convertView.findViewById(R.id.txtName);
            viewHolder.checkBox = convertView.findViewById(R.id.checkBox);
            result = convertView;
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
            result = convertView;
        }

        DataModel item = getItem(position);
        viewHolder.txtName.setText(item.name);
        viewHolder.checkBox.setChecked(item.checked);

        return result;
    }
}

ধাপ ৬: MainActivity.java

package com.app.sample;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private ArrayList<DataModel> dataModels;
    private ListView listView;
    private CustomAdapter adapter;

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

        listView = findViewById(R.id.listView);
        dataModels = new ArrayList<>();

        // ডেমো ডেটা (ডাটাবেস থেকে আসতে পারে)
        dataModels.add(new DataModel("Apple Pie", false));
        dataModels.add(new DataModel("Banana Bread", false));
        dataModels.add(new DataModel("Cupcake", false));
        dataModels.add(new DataModel("Donut", true));
        dataModels.add(new DataModel("Eclair", true));
        dataModels.add(new DataModel("Froyo", true));
        dataModels.add(new DataModel("Gingerbread", true));
        dataModels.add(new DataModel("Honeycomb", false));
        dataModels.add(new DataModel("Ice Cream Sandwich", false));
        dataModels.add(new DataModel("Jelly Bean", false));
        dataModels.add(new DataModel("Kitkat", false));
        dataModels.add(new DataModel("Lollipop", false));
        dataModels.add(new DataModel("Marshmallow", false));
        dataModels.add(new DataModel("Nougat", false));

        adapter = new CustomAdapter(dataModels, getApplicationContext());
        listView.setAdapter(adapter);

        // আইটেম ক্লিক করলে চেকবক্স টগল
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                DataModel dataModel = dataModels.get(position);
                dataModel.checked = !dataModel.checked;
                adapter.notifyDataSetChanged();
            }
        });
    }
}

ধাপ ৭: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.app.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

অ্যাপটি চালান

ডিভাইস সংযুক্ত করে Run ক্লিক করুন। লিস্টে প্রতিটি আইটেমের পাশে চেকবক্স থাকবে। আইটেমে ক্লিক করলে চেক স্টেট টগল হবে।

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

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

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

  3. অ্যান্ড্রয়েডে ListView-এর রিসাইক্লিং মেকানিজম কীভাবে কাজ করে?

  4. Android Data Binding 습득: সুস্পষ্ট UI ডেটা ইন্টিগ্রেশন