Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีใช้ binarySearch ใน ListView บน Android

การใช้ binarySearch ใน ListView บน Android

ตัวอย่างนี้สาธิตวิธีใช้เมธอด Collections.binarySearch() เพื่อค้นหาข้อมูลใน ListView บน Android ซึ่งต้องการข้อมูลที่เรียงลำดับแล้วจึงจะทำงานได้ถูกต้อง

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่ใน Android Studio

ไปที่ File → New Project และกรอกรายละเอียดที่จำเป็นเพื่อสร้างโปรเจกต์ใหม่

ขั้นตอนที่ 2: ออกแบบหน้าจอ (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="Enter Name"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/save"
            android:text="Save"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <Button
            android:id="@+id/refresh"
            android:text="Refresh"
            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>

ในโค้ดข้างต้น มีช่องกรอกชื่อ เมื่อกด Save จะเพิ่มข้อมูลลง ArrayList กด Refresh เพื่ออัปเดตรายการใน 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 arrayAdapter;
    ArrayList array_list;
    Set set = new HashSet();
    private ListView listView;

    @Override
    protected void onCreate(Bundle readdInstanceState) {
        super.onCreate(readdInstanceState);
        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) {
                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);
                        int index;
                        // ใช้ binarySearch ค้นหา "sairam" ใน ArrayList ที่เรียงแล้ว
                        index = Collections.binarySearch(array_list, "sairam");
                        if (index >= 0) {
                            // หากพบ ให้เติมค่า "sairam" ทุกตำแหน่งใน ArrayList
                            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, "Inserted", Toast.LENGTH_LONG).show();
                } else {
                    name.setError("Enter NAME");
                }
            }
        });
    }
}

การทดสอบแอปพลิเคชัน

เชื่อมต่ออุปกรณ์ Android จริงกับคอมพิวเตอร์ จาก Android Studio เปิดไฟล์ Activity และคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณ แล้วตรวจสอบหน้าจออุปกรณ์

วิธีใช้ binarySearch ใน ListView บน Android

ตอนนี้เราเพิ่มชื่อว่า "sairam" เนื่องจากเราค้นหาข้อความ "sairam" โดยใช้ binarySearch จาก ArrayList จะทำให้ค่าทั้งหมดถูกแทนที่ด้วย "sairam" ตามภาพด้านล่าง

วิธีใช้ binarySearch ใน ListView บน Android