Android bietet eine Vielzahl von Widgets für Benutzerinteraktionen und CheckBox ist eines davon. CheckBox ist eine spezielle Art von Schaltfläche mit zwei Zuständen, die entweder aktiviert oder deaktiviert sein können. Sie dienen als einfaches Werkzeug, um ohne großen Aufwand Informationen vom Benutzer zu sammeln. Sie werden im Allgemeinen verwendet, um Dinge in Aufgabenverwaltungsanwendungen vom Benutzer als erledigt zu markieren.

Es können Situationen auftreten, in denen wir möglicherweise nicht alle Eigenschaften des Widgets kennen, die zur Erstellungszeit angezeigt werden sollen, und diese Werte möglicherweise dynamisch zuweisen müssen. Glücklicherweise unterstützt Android das Erstellen von Widgets zur Laufzeit. Sehen wir uns an, wie Sie eine CheckBox dynamisch in Kotlin und nicht zur Build-Zeit erstellen .

Sich nähern

Schritt 1: Erstellen eines neuen Projekts

Informationen zum Erstellen eines neuen Projekts in Android Studio finden Sie unter Erstellen/Starten eines neuen Projekts in Android Studio.

Schritt 2: Activity_main.xml ändern 

Bevor eine CheckBox dynamisch hinzugefügt werden kann, muss zuvor ein Layout definiert werden, das die CheckBox enthält. Um die Anwendung einfach zu halten, wählen Sie für die Demoanwendung ein lineares Layout, das den gesamten Bildschirm abdeckt.

XML

<?xml version="1.0" encoding="utf-8"?>
  
<!--This LinearLayout will serve as the root 
    container to hold the checkbox
    It will fully occupy the device screen and
    will place the checkbox at its center-->
<LinearLayout
    android:id="@+id/root_layout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">
  
</LinearLayout>

Schritt 3: Hinzufügen einer Zeichenfolge zu strings.xml

Es hat sich bewährt, keine hartcodierten Zeichenfolgen zu verwenden, und wir machen dasselbe in der Anwendung.

XML

<resources>
   <string name="app_name">GFG | Dynamic Checkbox Demo</string>
   <string name="geek_message">TODO: Become A Geek</string>
</resources>

Auf diese Zeichenfolge kann in der Datei MainActivity.kt verwiesen werden mit:

getString(R.string.geek_message)

Schritt 4: Arbeiten mit der Datei MainActivity.kt

Verweisen Sie auf das Layout aus der Datei MainActivity.kt. Dies könnte mit der folgenden Codezeile geschehen:

val layout = findViewById<LinearLayout>(R.id.root_layout)

Erstellen Sie nun eine neue CheckBox in der Datei MainActivity.kt und legen Sie deren Layoutparameter fest. Die Layoutparameter werden zwingend benötigt, da sie beschreiben, wie die CheckBox mit dem Layout interagiert.

val geekBox = CheckBox(this)
geekBox.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)

Richten Sie einen Listener ein, um eine Toast - Nachricht anzuzeigen, wenn die CheckBox vom Benutzer umgeschaltet wird. Fügen Sie schließlich die erstellte CheckBox mit der folgenden Codezeile zum Layout hinzu.

layout.addView (GeekBox)

Kotlin

package org.geeksforgeeks.dynamic_checkbox
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.LinearLayout
import android.widget.Toast
  
class MainActivity : AppCompatActivity() {
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // References the root LinearLayout from 
        // the activity_main layout file
        val layout = findViewById<LinearLayout>(R.id.root_layout)
  
        // Create a new Checkbox at run-time
        val geekBox = CheckBox(this)
          
        // Define the layout properties and text for our check box
        geekBox.layoutParams = LinearLayout.LayoutParams(
          LinearLayout.LayoutParams.WRAP_CONTENT, 
          ViewGroup.LayoutParams.WRAP_CONTENT)
        geekBox.text = getString(R.string.geek_message)
          
        // Set-up a listener to show a Toast message when 
        // the check box is toggled.
        geekBox.setOnCheckedChangeListener{
          _, isChecked ->  Toast.makeText(this, 
                                          if (isChecked) "Congratulations!" + 
                                                          "You Are A Geek Now" 
                                          else "Don't Give Up", 
                                          Toast.LENGTH_SHORT).show() }
  
        // Add our created check box to the root 
        // layout for it to be displayed
        layout.addView(geekBox)
    }   
}

Ausgabe:

Möchten Sie eine schnellere und wettbewerbsfähigere Umgebung, um die Grundlagen von Android zu erlernen?
Klicken Sie hier , um zu einem Leitfaden zu gelangen, der von unseren Experten speziell kuratiert wurde, um Ihre Branche in kürzester Zeit bereit zu machen!