Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में डेटाबेस से CheckBox को ListView में कैसे बाइंड करें?

यह उदाहरण दर्शाता है कि Android में डेटाबेस (या डेटा सोर्स) से डेटा लेकर CheckBox वाले ListView में कैसे बाइंड किया जाता है। कस्टम एडॉप्टर और व्यू होल्डर पैटर्न का उपयोग किया गया है।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project।

चरण 2: मेन लेआउट

res/layout/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="match_parent" 
        app:layout_constraintBottom_toBottomOf="parent" 
        app:layout_constraintTop_toTopOf="parent" /> 
</androidx.constraintlayout.widget.ConstraintLayout>

चरण 3: रो आइटम लेआउट

res/layout/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="16dp"> 
    <TextView 
        android:id="@+id/txtName" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        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_centerVertical="true" /> 
</RelativeLayout>

चरण 4: डेटा मॉडल

src/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; 
    } 
}

चरण 5: कस्टम एडॉप्टर

src/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 { 
    private ArrayList dataSet; 
    private Context mContext; 
    
    static class ViewHolder { 
        TextView txtName; 
        CheckBox checkBox; 
    } 
    
    public CustomAdapter(ArrayList 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); 
    } 
    
    @NonNull 
    @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); 
        
        // चेकबॉक्स क्लिक लिस्टनर (ऑप्शनल)
        viewHolder.checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> { 
            item.checked = isChecked; 
        }); 
        
        return result; 
    } 
}

चरण 6: MainActivity

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 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((parent, view, position, id) -> { 
            DataModel model = dataModels.get(position); 
            model.checked = !model.checked; 
            adapter.notifyDataSetChanged(); 
        }); 
    } 
}

चरण 7: AndroidManifest.xml

मानक मैनिफेस्ट।

मॉडर्न अल्टरनेटिव: RecyclerView + Room Database

नए प्रोजेक्ट्स के लिए:

  • Room Database - SQLite अब्स्ट्रैक्शन
  • RecyclerView - ListView से बेहतर परफॉरमेंस
  • ViewBinding/DataBinding - findViewById की जरूरत नहीं
  • LiveData/Flow - ऑब्जर्वेबल डेटा

ऐप चलाएं

डिवाइस कनेक्ट करें, Run करें। लिस्ट आइटम पर क्लिक करके चेकबॉक्स टॉगल करें।

Android में डेटाबेस से CheckBox को ListView में कैसे बाइंड करें?

  1. Android में ListView के लिए कस्टम एडाप्टर कैसे बनाएं? Android में ListView के लिए कस्टम एडाप्टर कैसे बनाएं?

    Android ListView के लिए कस्टम एडाप्टर बनाना यह उदाहरण दर्शाता है कि BaseAdapter को एक्सटेंड करके कस्टम एडाप्टर कैसे बनाया जाए, जो कस्टम डेटा मॉडल और कस्टम रो लेआउट के साथ ListView में डेटा बाइंड करता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: मेन लेआउट (res/

  1. Android पर ListView का रीसाइक्लिंग मैकेनिज्म कैसे काम करता है? Android पर ListView का रीसाइक्लिंग मैकेनिज्म कैसे काम करता है?

    Android में ListView/RecyclerView रीसाइक्लिंग मैकेनिज्म समझाया गया यह ट्यूटोरियल बताता है कि Android में व्यू रीसाइक्लिंग कैसे काम करता है - ListView के कन्वर्टव्यू पैटर्न से लेकर RecyclerView के अनिवार्य ViewHolder पैटर्न तक। रीसाइक्लिंग क्यों जरूरी है? बिना रीसाइक्लिंग के, 1000 आइटम्स की लिस्ट के

  1. Android Data Binding मास्टर करें: सहज UI डेटा एकीकरण Android Data Binding मास्टर करें: सहज UI डेटा एकीकरण

    डेटा बाइंडिंग एक तकनीक है जिसका उपयोग तब किया जाता है जब आप सूचना के टुकड़ों (आपके डेटा) को कुछ विज़ुअल उपयोगकर्ता इनपुट तत्वों से जोड़ना चाहते हैं। इस प्रक्रिया में, जब भी इनपुट अपडेट होता है, तो उसके पीछे का डेटा भी अपडेट हो जाता है। यह कोई नई अवधारणा नहीं है, और ऐसे ढेर सारे फ्रेमवर्क हैं जिन्हें