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

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

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

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

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

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

מתחילים ליצור פריסה עם 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 בכל פעם שסטטוס התיבות הסימון משתנה.