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

Android ListView में सभी चेक्ड आइटम प्राप्त करना

Android ListView में चेकबॉक्स के साथ चेक्ड आइटम्स प्राप्त करना

यह उदाहरण दर्शाता है कि ListView में कस्टम एडाप्टर का उपयोग करके चेकबॉक्स वाले आइटम्स कैसे बनाएं, "सभी चुनें/सभी हटाएं" कार्यक्षमता कैसे जोड़ें, और चेक्ड आइटम्स की सूची कैसे प्राप्त करें।

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

Android Studio में File → New Project चुनें और प्रोजेक्ट बनाएं।

चरण 2: लेआउट - बटन और ListView

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <Button
            android:id="@+id/viewCheckedItem"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="सभी चुनें" />

        <Button
            android:id="@+id/deSelect"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="सभी हटाएं" />

    </LinearLayout>

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="30dp"
        android:layout_weight="1">
    </ListView>

</LinearLayout>

चरण 3: लिस्ट आइटम लेआउट (listitem.xml)

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

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/playerNameList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:textSize="20sp" />

</LinearLayout>

चरण 4: Model.java - डेटा मॉडल

public class Model {
    private boolean isSelected;
    private String player;

    public String getPlayer() { return player; }
    public void setPlayer(String player) { this.player = player; }
    public boolean getSelected() { return isSelected; }
    public void setSelected(boolean selected) { isSelected = selected; }
}

चरण 5: CustomAdapter.java - चेकबॉक्स हैंडलिंग

import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Objects;

class CustomAdapter extends BaseAdapter {
    private Context context;
    private static ArrayList modelArrayList;

    CustomAdapter(Context context, ArrayList modelArrayList) {
        this.context = context;
        CustomAdapter.modelArrayList = modelArrayList;
    }

    @Override public int getViewTypeCount() { return getCount(); }
    @Override public int getItemViewType(int position) { return position; }
    @Override public int getCount() { return modelArrayList.size(); }
    @Override public Object getItem(int position) { return modelArrayList.get(position); }
    @Override public long getItemId(int position) { return 0; }

    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = Objects.requireNonNull(inflater).inflate(R.layout.listitem, null, true);
            holder.checkBox = convertView.findViewById(R.id.checkBox);
            holder.tvPlayer = convertView.findViewById(R.id.playerNameList);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.checkBox.setText("Checkbox " + position);
        holder.tvPlayer.setText(modelArrayList.get(position).getPlayer());
        holder.checkBox.setChecked(modelArrayList.get(position).getSelected());
        holder.checkBox.setTag(R.integer.btnPlusView, convertView);
        holder.checkBox.setTag(position);

        holder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Integer pos = (Integer) holder.checkBox.getTag();
                Toast.makeText(context, "Checkbox " + pos + " क्लिक किया!", Toast.LENGTH_SHORT).show();
                
                if (modelArrayList.get(pos).getSelected()) {
                    modelArrayList.get(pos).setSelected(false);
                } else {
                    modelArrayList.get(pos).setSelected(true);
                }
            }
        });

        return convertView;
    }

    private class ViewHolder {
        CheckBox checkBox;
        TextView tvPlayer;
    }
}

चरण 6: strings.xml में इंटीजर रिसोर्स

<resources>
    <string name="app_name">Sample</string>
    <integer name="btnPlusView">1</integer>
    <integer name="btnPlusPos">2</integer>
</resources>

चरण 7: MainActivity.java - मुख्य लॉजिक

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

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private ArrayList modelArrayList;
    private CustomAdapter customAdapter;
    Button btnSelect, btnDeselect;

    public static String[] playerList = new String[]{
        "सुनील छेत्री - भारत", "क्रिस्टियानो रोनाल्डो - पुर्तगाल",
        "लियोनेल मेसी - अर्जेंटीना", "नेमार जूनियर - ब्राजील",
        "ईडन हेज़ार्ड - बेल्जियम", "जिगी बफन - इटली",
        "जेम्स रोड्रिग्ज - कोलंबिया", "सादियो माने - सेनेगल",
        "टोनी क्रूस - जर्मनी"
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        listView = findViewById(R.id.listView);
        btnSelect = findViewById(R.id.viewCheckedItem);
        btnDeselect = findViewById(R.id.deSelect);
        
        modelArrayList = getModel(false);
        customAdapter = new CustomAdapter(MainActivity.this, modelArrayList);
        listView.setAdapter(customAdapter);

        btnSelect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                modelArrayList = getModel(true);
                customAdapter = new CustomAdapter(MainActivity.this, modelArrayList);
                listView.setAdapter(customAdapter);
                Toast.makeText(getApplicationContext(), "सभी आइटम चुने गए", Toast.LENGTH_SHORT).show();
            }
        });

        btnDeselect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                modelArrayList = getModel(false);
                customAdapter = new CustomAdapter(MainActivity.this, modelArrayList);
                listView.setAdapter(customAdapter);
                Toast.makeText(getApplicationContext(), "सभी आइटम अनचेक किए गए", Toast.LENGTH_SHORT).show();
            }
        });
    }

    private ArrayList getModel(boolean isSelect) {
        ArrayList list = new ArrayList<>();
        for (int i = 0; i < 9; i++) {
            Model model = new Model();
            model.setSelected(isSelect);
            model.setPlayer(playerList[i]);
            list.add(model);
        }
        return list;
    }
}

चरण 8: AndroidManifest.xml

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

चेक्ड आइटम्स की सूची प्राप्त करना

// चेक्ड आइटम्स पाने के लिए:
ArrayList checkedItems = new ArrayList<>();
for (Model model : modelArrayList) {
    if (model.getSelected()) {
        checkedItems.add(model.getPlayer());
    }
}
// checkedItems में अब सभी चेक्ड प्लेयर्स के नाम हैं

बेहतर तरीका: RecyclerView + CheckBox

आधुनिक Android विकास के लिए RecyclerView उपयोग करें - बेहतर परफॉर्मेंस, व्यूहोल्डर पैटर्न, और अधिक लचीलापन।

ऐप चलाएं

डिवाइस कनेक्ट करें, Run पर क्लिक करें। प्लेयर्स की सूची चेकबॉक्स के साथ दिखेगी। "सभी चुनें"/"सभी हटाएं" बटन काम करेंगे। व्यक्तिगत चेकबॉक्स टॉगल कर सकते हैं।

  1. Android में ListView आइटम्स का बैकग्राउंड कलर कैसे बदलें? Android में ListView आइटम्स का बैकग्राउंड कलर कैसे बदलें?

    Android में ListView आइटम्स का बैकग्राउंड कलर बदलना यह उदाहरण दर्शाता है कि Android में ListView आइटम्स का बैकग्राउंड कलर कैसे बदला जाता है। चरण 1 - नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - res/layout/activity_ma

  1. Android ListView में फुटर (Footer) कैसे जोड़ें? Android ListView में फुटर (Footer) कैसे जोड़ें?

    Android ListView में कस्टम फुटर व्यू जोड़ना ListView के अंत में एक फुटर व्यू (जैसे सूची समाप्त संदेश) जोड़ने का तरीका सीखें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project से प्रोजेक्ट बनाएं। चरण 2: मेन लेआउट में ListView res/layout/activity_main.xml: <RelativeLayout xmlns:and

  1. Android Spinner से चयनित मान (Value) कैसे प्राप्त करें? Android Spinner से चयनित मान (Value) कैसे प्राप्त करें?

    Android Spinner (ड्रॉपडाउन) से चयनित आइटम प्राप्त करना strings.xml में स्ट्रिंग ऐरे से Spinner भरकर OnItemSelectedListener से चयनित मान प्राप्त करने का तरीका। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project। चरण 2: लेआउट में Spinner res/layout/activity_main.xml: <?xml version=1