Android/Java แสดงไดอะล็อกตัวเลือกแบบ Multiple choice

แสดงไดอะล็อกด้วย AlertDialog.setMultiChoiceItems

แสดงด้วย setMultiChoiceItems

ไฟล์ที่เกี่ยวข้อง

  • activity_main.xml
  • MainActivity.java

activity_main.xml

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

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Multiple choice dialog"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

package com.phaisarn.myapplication;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

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

        final ArrayList<Integer> arrayList = new ArrayList<>();

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final String[] items = {"2559", "2560", "2561", "2562"};
                boolean[] isSelected = new boolean[4];
                for (int i : arrayList) {
                    isSelected[i] = true;
                }
                new AlertDialog.Builder(MainActivity.this)
                        .setTitle("Multiple choice dialog")
                        .setMultiChoiceItems(items, isSelected, new DialogInterface.OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                if (isChecked) {
                                    arrayList.add(which);
                                } else if (arrayList.contains(which)) {
                                    arrayList.remove(Integer.valueOf(which));
                                }
                            }
                        })
                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                String str = "";
                                for (int i : arrayList) {
                                    str += " " + items[i] + "\n";
                                }
                                str = str.substring(0, str.length() - 1);
                                if (str.length() > 0) {
                                    Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
                                }
                            }
                        })
                        .show();
            }
        });
    }
}

บรรทัดที่ 21: สร้างตัวแปร arrayList ไว้จดจำตัวเลือกที่ถูกเลือก
บรรทัดที่ 27: กำหนดให้มีตัวเลือก 4 ตัว เก็บไว้ใน items
บรรทัดที่ 28: สร้างตัวแปร isSelected ไว้รับค่าตัวเลือกที่ถูกเลือกจาก arrayList เพื่อนำไปกำหนดให้ MultiChoice
บรรทัดที่ 34: นำตัวเลือก items และค่าตัวเลือกที่ถูกเลือกจาก isSelected ไปใช้ด้วยเมธอด setMultiChoiceItems()
บรรทัดที่ 44: กำหนดปุ่ม PositiveButton
บรรทัดที่ 49: นำค่าของตัวเลือกที่ถูกเลือกมาเก็บไว้ในตัวแปร str
บรรทัดที่ 51: ลบเครื่องหมาย \n ตัวสุดท้ายออก