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

Android ListView में बाइनरी सर्च (binarySearch) कैसे करें?

Android ListView में बाइनरी सर्च (binarySearch) करना

यह उदाहरण दर्शाता है कि Android ListView में Collections.binarySearch() विधि का उपयोग करके बाइनरी सर्च कैसे किया जाता है। बाइनरी सर्च के लिए List का सॉर्टेड होना आवश्यक है।

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

Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।

चरण 2: लेआउट फ़ाइल (activity_main.xml) कॉन्फ़िगर करें

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"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:hint="नाम दर्ज करें"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/save"
            android:text="सेव करें"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <Button
            android:id="@+id/refresh"
            android:text="रिफ्रेश"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

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

उपरोक्त कोड में, हमने नाम के लिए EditText लिया है। जब उपयोगकर्ता सेव बटन पर क्लिक करता है, तो डेटा ArrayList में स्टोर हो जाता है। रिफ्रेश बटन पर क्लिक करके ListView में परिवर्तन देखे जा सकते हैं।

चरण 3: MainActivity.java में कोड जोड़ें

package com.example.andy.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
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> array_list;
    Set<String> set = new HashSet<>();
    private ListView listView;

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

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

        findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (arrayAdapter != null) {
                    arrayAdapter.notifyDataSetChanged();
                    listView.invalidateViews();
                    listView.refreshDrawableState();
                }
            }
        });

        findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!name.getText().toString().isEmpty()) {
                    set.add(name.getText().toString());
                    array_list.clear();

                    if (array_list.isEmpty()) {
                        array_list.addAll(set);

                        // बाइनरी सर्च का उपयोग करके 'sairam' ढूंढें
                        int index = Collections.binarySearch(array_list, "sairam");
                        if (index >= 0) {
                            // यदि मिल जाए तो सभी एलिमेंट्स को 'sairam' से भर दें
                            Collections.fill(array_list, "sairam");
                        }

                        array_list.trimToSize();
                        arrayAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, array_list);
                        listView.setAdapter(arrayAdapter);
                    } else {
                        listView.setVisibility(View.GONE);
                    }
                    Toast.makeText(MainActivity.this, "इन्सर्ट किया गया", Toast.LENGTH_LONG).show();
                } else {
                    name.setError("नाम दर्ज करें");
                }
            }
        });
    }
}

एप्लिकेशन चलाएं

अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में प्रोजेक्ट की एक्टिविटी फ़ाइल खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और डिवाइस पर डिफ़ॉल्ट स्क्रीन देखें।

Android ListView में बाइनरी सर्च (binarySearch) कैसे करें?

अब हम नाम के रूप में 'sairam' इन्सर्ट कर रहे हैं क्योंकि हम ArrayList से 'sairam' स्ट्रिंग को बाइनरी सर्च का उपयोग करके खोज रहे हैं। यह नीचे दिखाए अनुसार सभी मानों को 'sairam' से बदल देगा:

Android ListView में बाइनरी सर्च (binarySearch) कैसे करें?

नोट: Collections.binarySearch() के लिए List का सॉर्टेड होना आवश्यक है। इस उदाहरण में Set का उपयोग किया गया है जो स्वाभाविक रूप से सॉर्टेड नहीं होता, इसलिए परिणाम अप्रत्याशित हो सकते हैं। उत्पादन कोड में बाइनरी सर्च से पहले Collections.sort() का उपयोग करें।

  1. एंड्रॉइड पर ListView को डायनामिक रूप से कैसे अपडेट करें एंड्रॉइड पर ListView को डायनामिक रूप से कैसे अपडेट करें

    एंड्रॉइड में ListView को डायनामिक रूप से अपडेट करना यह गाइड दिखाता है कि डेटा सेट बदलने पर ListView को प्रोग्रामेटिक रूप से कैसे रीफ्रेश किया जाए। मुख्य विचार: अंतर्निहित डेटा संरचना को संशोधित करें और फिर एडॉप्टर पर notifyDataSetChanged() कॉल करें। पूर्वापेक्षाएँ एंड्रॉइड स्टूडियो, न्यूनतम SDK 21

  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 अलर्ट डायलॉग में ListView कैसे दिखाएं? Android अलर्ट डायलॉग में ListView कैसे दिखाएं?

    Android AlertDialog में कस्टम ListView प्रदर्शित करना यह उदाहरण दर्शाता है कि एक कस्टम लेआउट के साथ AlertDialog में ListView कैसे दिखाया जाए, जिसमें नीचे एक बटन भी शामिल है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: मेन लेआउट (res/layout/activity_main.xml) <