Como usar RadioGroup e RadioButton em Kotlin

Como usar RadioGroup e RadioButton em Kotlin

Data: 30/03/2020 | Autor: Rodrigo Leutz

Nesse tutorial vou demonstrar como usar RadioGroup e RadioButton em Kotlin para obter de resposta uma soma do resultado delas.

No canal do telegram teve um usuário com uma dúvida sobre RadioGroup e RadioButton, ele precisava fazer a soma deles para elaborar uma resposta como uma pontuação, notei que ainda não havia escrito nada sobre o assunto, então resolvi fazer um tutorial como este.

Primeiramente vamos criar um novo projeto vazio, se você não sabe de uma olhada em como criar um novo projeto no Android Studio.

Então vou explicar de uma forma simples como obter a soma do resultado de 3 RadioGroups de duas formas diferentes usando o mesmo xml.

Layout

Em nossa activity_main vamos deixar o código como o seguinte para que possamos depois ver as duas maneiras de fazer o cálculo e vou explicar o porque das duas formas.

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Somando as opções"
        android:textSize="30dp"
        android:textStyle="bold"
        android:gravity="center"
        app:layout_constraintTop_toTopOf="parent"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_margin="16dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Opçao 1"
            android:textStyle="bold"
            android:textSize="25dp"
            android:gravity="center"/>
        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/rdg1">
            <RadioButton
                android:id="@+id/rdg1btn1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="1"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg1btn2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="2"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg1btn3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="3"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg1btn4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="4"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg1btn5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="5"
                android:layout_weight="1"/>
        </RadioGroup>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:text="Opçao 2"
            android:textStyle="bold"
            android:textSize="25dp"
            android:gravity="center"/>
        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/rdg2">
            <RadioButton
                android:id="@+id/rdg2btn1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="1"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg2btn2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="2"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg2btn3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="3"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg2btn4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="4"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg2btn5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="5"
                android:layout_weight="1"/>
        </RadioGroup>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:text="Opçao 3"
            android:textStyle="bold"
            android:textSize="25dp"
            android:gravity="center"/>
        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/rdg3">
            <RadioButton
                android:id="@+id/rdg3btn1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="1"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg3btn2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="2"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg3btn3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="3"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg3btn4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="4"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/rdg3btn5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="5"
                android:layout_weight="1"/>
        </RadioGroup>
        <TextView
            android:id="@+id/tvSum"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_marginTop="30dp"
            android:textStyle="bold"
            android:textSize="35dp" />
    </LinearLayout>
    <Button
        android:id="@+id/btnSum"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="Somar"
        app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>




A imagem do aplicativo de estar como a seguinte.

Layout do RadioGroup e RadioButton

Código

Agora vamos ver o primeiro modo de soma desses RadioGroups para que tenhamos o resultado de uma simples forma.

Esta é uma forma de fazer quando o texto do RadioButton está com o valor a ser somado.

Então vamos ao código de nossa MainActivity.

package br.com.uware.radiobutton

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.RadioButton
import android.widget.RadioGroup
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btnSum.setOnClickListener {
            tvSum.text = checkGroups(rdg1,rdg2,rdg3).toString()
        }
    }
    fun checkGroups(vararg rdg: RadioGroup): Int{
        var total = 0
        for(x in 0..rdg.size-1){
            total += checkRadio(rdg[x])
        }
        return total
    }
    fun checkRadio(rdg: RadioGroup): Int {
        var total: Int = 0
        val rBtn = findViewById<RadioButton>(rdg.checkedRadioButtonId)
        total = rBtn.text.toString().toInt()
        return total
    }
}




Agora vamos supor que nosso aplicativo não tenha os números dentro do texto, sejam nomes e você queira fazer uma soma para criar uma estatistica de algum item.

Vou então descrever como fazer a mesma soma só que sem utilizar o texto de nossos RadioButtons, imaginando que cada um deles seja um nome vamos fazer da seguinte forma.

Vamos então modificar a nossa MainActivity para o seguinte código.

package br.com.uware.radiobutton

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.RadioButton
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val rdg1 = listOf<RadioButton>(rdg1btn1,rdg1btn2,rdg1btn3,rdg1btn4,rdg1btn5)
        val rdg2 = listOf<RadioButton>(rdg2btn1,rdg2btn2,rdg2btn3,rdg2btn4,rdg2btn5)
        val rdg3 = listOf<RadioButton>(rdg3btn1,rdg3btn2,rdg3btn3,rdg3btn4,rdg3btn5)
        btnSum.setOnClickListener {
            tvSum.text = checkGroups(rdg1, rdg2, rdg3).toString()
        }
    }
    fun checkGroups(vararg rdg: List<RadioButton>): Int{
        var total = 0
        for(x in 0..rdg.size-1){
            total += checkRadio(rdg[x])
        }
        return total
    }
    fun checkRadio(rdg: List<RadioButton>): Int{
        var total: Int = 0
        for(x in 1..rdg.size){
            if(rdg[x-1].isChecked){
                total = x
            }
        }
        return total
    }
}




Veremos que destas duas maneiras teremos o mesmo resultado em nosso aplicativo, feito de duas diferentes formas.

O resultado deve ser como o da imagem a seguir.

Resultado do aplicativo.

Enfim espero poder ter ajudado com mais este tutorial sobre como usar RadioGroup e RadioButton em Kotlin.

Se precisar de mais informações sobre o assunto entre no site RadioGroup e RadioButton.





Tags: , , ,

Autor Rodrigo Leutz
Rodrigo Leutz

Desenvolvedor Web e Android ( Kotlin e Java )