ตัวอย่างนี้สาธิตวิธี เพิ่ม Checkbox List (Multi-Choice) ใน Alert Dialog
ขั้นตอนที่ 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"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="match_parent">
<TextView
android:id="@+id/click"
android:layout_width="wrap_content"
android:textSize="30sp"
android:layout_height="wrap_content"
android:text="Click" />
</LinearLayout>
ขั้นตอนที่ 3: เพิ่มโค้ดใน src/MainActivity.java
package com.example.myapplication;
import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView text;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.click);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAlertDialog();
}
});
}
private void showAlertDialog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle("AlertDialog");
String[] items = {"Java", "Android", "Data Structures", "HTML", "CSS"};
boolean[] checkedItems = {false, false, false, false, false};
alertDialog.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
switch (which) {
case 0:
Toast.makeText(MainActivity.this, "Checked: Java", Toast.LENGTH_LONG).show();
break;
case 1:
Toast.makeText(MainActivity.this, "Checked: Android", Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(MainActivity.this, "Checked: Data Structures", Toast.LENGTH_LONG).show();
break;
case 3:
Toast.makeText(MainActivity.this, "Checked: HTML", Toast.LENGTH_LONG).show();
break;
case 4:
Toast.makeText(MainActivity.this, "Checked: CSS", Toast.LENGTH_LONG).show();
break;
}
}
}
});
AlertDialog alert = alertDialog.create();
alert.setCanceledOnTouchOutside(false);
alert.show();
}
}
การทดสอบแอปพลิเคชัน
รันแอปพลิเคชันบนอุปกรณ์ Android จริง ใน Android Studio คลิกไอคอน Run เลือกอุปกรณ์ แล้วตรวจสอบหน้าจอเริ่มต้น

คลิก TextView จะเปิด Alert Dialog พร้อม Checkbox List

คำอธิบาย setMultiChoiceItems()
items- Array ของข้อความแต่ละรายการcheckedItems- Boolean Array สถานะเริ่มต้นของแต่ละ Checkbox (true = ติ๊ก, false = ไม่ติ๊ก)OnMultiChoiceClickListener- Callback เมื่อผู้ใช้ติ๊ก/ยกเลิกติ๊ก (which = index, isChecked = สถานะใหม่)- Array
checkedItemsจะถูกอัปเดตอัตโนมัติโดยระบบ
การรับค่าที่เลือกหลังกด OK (Best Practice)
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select Items");
String[] items = {"Java", "Android", "Kotlin"};
boolean[] checkedItems = {false, true, false}; // Default
builder.setMultiChoiceItems(items, checkedItems, (dialog, which, isChecked) -> {
// Optional: Real-time feedback
checkedItems[which] = isChecked; // Sync manual (optional, system does it)
});
builder.setPositiveButton("OK", (dialog, which) -> {
// รับค่าที่เลือก
List<String> selected = new ArrayList<>();
for (int i = 0; i < checkedItems.length; i++) {
if (checkedItems[i]) selected.add(items[i]);
}
Toast.makeText(this, "Selected: " + selected, Toast.LENGTH_SHORT).show();
});
builder.setNegativeButton("Cancel", null);
builder.show();
การปรับแต่ง Checkbox List (Advanced)
- Custom Layout per Item - ใช้
setAdapter()กับ Custom Adapter แทน setMultiChoiceItems - Disable บาง Item - Custom Adapter + ViewHolder.setEnabled(false)
- Group Header - ใช้ Sectioned RecyclerView Adapter ใน Dialog
- Search/Filter - เพิ่ม EditText ด้านบน Dialog สำหรับกรองรายการ
หมายเหตุ
Dialog ที่สร้างด้วย AlertDialog.Builder และ setMultiChoiceItems() จะ ไม่ปิดอัตโนมัติ เมื่อติ๊ก Checkbox ต้องกดปุ่ม OK/Cancel หรือปิดด้วย Back Button