Casilla de verificación dinámica en Android con ejemplos

Android ofrece una amplia variedad de widgets para las interacciones del usuario y CheckBox es uno de ellos. CheckBox es un tipo especial de botón con dos estados que pueden estar marcados o desmarcados. Sirven como una herramienta simple para recopilar información del usuario sin mucha molestia. Generalmente se usan para marcar cosas como completadas por el usuario en las aplicaciones de administración de tareas.

Pueden surgir algunas situaciones en las que es posible que no conozcamos todas las propiedades del widget que se mostrarán en el momento de la compilación y es posible que tengamos que asignar esos valores dinámicamente. Afortunadamente, Android admite la creación de widgets en tiempo de ejecución. Veamos cómo crear un CheckBox dinámicamente en Kotlin en lugar de en el momento de la compilación .

Acercarse

Paso 1: Creación de un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio.

Paso 2: Modificación de activity_main.xml 

Antes de que se pueda agregar dinámicamente un CheckBox, se debe definir un diseño de antemano para contener el CheckBox. Para mantener la aplicación simple, elija un diseño lineal que cubra toda la pantalla para la aplicación de demostración.

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>

Paso 3: agregar una string a strings.xml

Es una buena práctica no usar strings codificadas de forma rígida, y hagamos lo mismo en la aplicación.

XML

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

Se puede hacer referencia a esta string en el archivo MainActivity.kt usando:

getString(R.string.geek_message)

Paso 4: trabajar con el archivo MainActivity.kt

Haga referencia al diseño del archivo MainActivity.kt. Esto podría hacerse usando la siguiente línea de código:

val diseño = findViewById<LinearLayout>(R.id.root_layout)

Ahora cree un nuevo CheckBox en el archivo MainActivity.kt y establezca sus parámetros de diseño. Los parámetros de diseño son obligatoriamente necesarios ya que describen cómo el CheckBox interactuará con el diseño.

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

Configure un oyente para mostrar un mensaje Toast cada vez que el usuario active CheckBox. Finalmente, agregue el CheckBox creado al diseño usando la siguiente línea de código.

diseño.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)
    }   
}

Producción:

Publicación traducida automáticamente

Artículo escrito por z0o0p y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *