¿Cómo hacer que CardView sea comprobable en Android?

En Android, podemos hacer que un CardView sea verificable, lo que puede ser una función realmente útil. Si queremos que el usuario seleccione algunos elementos y queremos mostrar los elementos que el usuario ha elegido, esta es la característica más importante para nosotros. qué

Make CardView Checkable In Android Sample GIF

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: trabajar con el archivo Build.Gradle (nivel de aplicación)

Gradle Scripts > build.gradle(Módulo:aplicación)

implementación ‘com.google.android.material:material:1.1.0’

Agregue las extensiones de Android Kotlin dentro de la etiqueta de complementos {} .

complementos {

   ——–

   ——–

   id ‘kotlin-android-extensiones’

}

Paso 3: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo  activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<!--Constraint Layout as the parent layout-->
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#CFCDCD"
    tools:context=".MainActivity">
  
    <!--Linear Layout as the child layout-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="15dp"
        tools:layout_editor_absoluteX="-16dp"
        tools:layout_editor_absoluteY="-287dp">
  
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Long Press to Check"
            android:textColor="#4CAF50"
            android:textSize="25sp"
            android:textStyle="bold" />
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:weightSum="1">
  
            <!--CardView for Taj Mahal -->
            <com.google.android.material.card.MaterialCardView
                android:id="@+id/cardTajMahal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:layout_weight=".5"
                android:checkable="true"
                android:clickable="true"
                android:focusable="true"
                android:padding="4dp"
                app:cardBackgroundColor="@android:color/white"
                app:cardCornerRadius="7dp"
                app:cardElevation="3dp">
  
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
  
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="5dp"
                        android:text="Taj Mahal"
                        android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
  
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="5dp"
                        android:layout_marginTop="15dp"
                        android:text="It is Ivory White Marbel Statue on South Bank of Yamuna River"
                        android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
  
                </LinearLayout>
  
            </com.google.android.material.card.MaterialCardView>
  
            <!--CardView for Statue of Unity -->
            <com.google.android.material.card.MaterialCardView
                android:id="@+id/cardStatueOfUnity"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="20dp"
                android:layout_marginTop="20dp"
                android:layout_weight=".5"
                android:checkable="true"
                android:clickable="true"
                android:focusable="true"
                android:padding="4dp"
                app:cardBackgroundColor="@android:color/white"
                app:cardCornerRadius="7dp"
                app:cardElevation="3dp">
  
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
  
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="5dp"
                        android:text="Statue Of Unity"
                        android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
  
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="5dp"
                        android:layout_marginTop="15dp"
                        android:text="It is a statue of Indian Independence Activist
                                  Sardar Vallabh Bhai Patel"
                        android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
                </LinearLayout>
  
            </com.google.android.material.card.MaterialCardView>
              
        </LinearLayout>
          
        <!--Card View for Lotus Temple-->
        <com.google.android.material.card.MaterialCardView
            android:id="@+id/cardLotusTemple"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="25dp"
            android:layout_marginBottom="5dp"
            android:checkable="true"
            android:clickable="true"
            android:focusable="true"
            android:padding="4dp"
            app:cardBackgroundColor="@android:color/white"
            app:cardCornerRadius="7dp"
            app:cardElevation="3dp">
  
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
  
                <TextView
                    android:id="@+id/txvLotusTemple"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="5dp"
                    android:text="Lotus Temple"
                    android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
  
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="5dp"
                    android:layout_marginTop="15dp"
                    android:layout_marginBottom="15dp"
                    android:text="Notable for its flowerlike shape, located in Delhi, India, is a Baha'i House of worship that was dedicated in December 1986."
                    android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
  
            </LinearLayout>
        </com.google.android.material.card.MaterialCardView>
  
        <Button
            android:id="@+id/btnWhatsSelected"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:backgroundTint="#B13C3C"
            android:text="Show what's selected"
            android:textAllCaps="false"
            android:textSize="20sp" />
    </LinearLayout>
  
</androidx.constraintlayout.widget.ConstraintLayout>

Paso 4: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.activity_main.*
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // implementing the long click listener 
        // for when pressed on card view
        cardTajMahal.setOnLongClickListener {
            // if the card view is checked,make 
            // it unchecked and vice-versa
            cardTajMahal.isChecked = !cardTajMahal.isChecked
            true
        }
  
        // implementing the long click listener 
        // for when pressed on card view
        cardStatueOfUnity.setOnLongClickListener {
            cardStatueOfUnity.isChecked = !cardStatueOfUnity.isChecked
            true
        }
  
        // implementing the long click listener
        // for when pressed on card view
        cardLotusTemple.setOnLongClickListener {
            cardLotusTemple.isChecked = !cardLotusTemple.isChecked
            true
        }
  
        btnWhatsSelected.setOnClickListener {
            // getting the info about which 
            // card view has been selected
            var msg = ""
            if (cardTajMahal.isChecked) {
                msg += "'Taj Mahal' "
            }
            if (cardStatueOfUnity.isChecked) {
                msg += "'Statue Of Unity' "
            }
            if (cardTajMahal.isChecked) {
                msg += "'Lotus Temple' "
            }
            // snack bar is just like a toast msg
            Snackbar.make(it, " $msg Selected", Snackbar.LENGTH_LONG).show()
        }
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por lavishgarg26 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 *