הוספת תיבות סימון לאפליקציה

אפשר לנסות את הדרך של כתיבת הודעה
‫Jetpack Compose היא ערכת הכלים המומלצת לבניית ממשק משתמש ב-Android. איך מוסיפים רכיבים ב-Compose

תיבות סימון מאפשרות למשתמש לבחור אפשרות אחת או יותר מתוך מבחר אפשרויות. בדרך כלל, מציגים את האפשרויות של תיבות הסימון ברשימה אנכית.

תמונה שמציגה דוגמה לתיבות סימון מ-material.io
איור 1. דוגמה לתיבות סימון מתוך תיבת הסימון של Material Design.

כדי ליצור כל אפשרות של תיבת סימון, יוצרים CheckBox בפריסה. מכיוון שקבוצה של תיבות סימון מאפשרת למשתמש לבחור כמה פריטים, כל תיבת סימון מנוהלת בנפרד, ואתם צריכים לרשום רכיב click listener לכל אחת מהן.

תגובה לאירועים מסוג קליק

מתחילים ביצירת פריסה עם CheckBox אובייקטים ברשימה:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <CheckBox android:id="@+id/checkbox_meat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Meat" />
    <CheckBox android:id="@+id/checkbox_cheese"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cheese"/>
</LinearLayout>

אחרי שהפריסה מוכנה, עוברים אל Activity או אל Fragment, מאתרים את התצוגות CheckBox ומגדירים מאזין לשינויים, כמו בדוגמה הבאה:

Kotlin

findViewById<CheckBox>(R.id.checkbox_meat)
    .setOnCheckedChangeListener { buttonView, isChecked ->
        Log.d("CHECKBOXES", "Meat is checked: $isChecked")
    }

findViewById<CheckBox>(R.id.checkbox_cheese)
    .setOnCheckedChangeListener { buttonView, isChecked ->
        Log.d("CHECKBOXES", "Cheese is checked: $isChecked")
    }

Java

findViewById<CheckBox>(R.id.checkbox_meat)
    .setOnCheckedChangeListener { buttonView, isChecked ->
        Log.d("CHECKBOXES", "Meat is checked: $isChecked");
    }

findViewById<CheckBox>(R.id.checkbox_cheese)
    .setOnCheckedChangeListener { buttonView, isChecked ->
        Log.d("CHECKBOXES", "Cheese is checked: $isChecked");
    }

הקוד הקודם מדפיס הודעה ב-Logcat בכל פעם שסטטוס תיבות הסימון משתנה.