CheckBox
Conhecidos mundialmente como caixas de seleção, o checkbox permite que o usuário selecione uma ou mais opções de um conjunto.
No caso dele, ele só consegue armazenar dois valores, ou é true ou é false.
Este elemento pode ser criado usando a tag <Checkbox>:
<CheckBox
android:id="@+id/checkbox_on_off"
android:text="Meu CheckBox"
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
Manipulando um Checkbox
O processo de manipulação de um checkbox acontece de forma bem simples.
Observe abaixo como obtemos e configuramos algum valor booleano para ele:
val checkBox = findViewById<View>(R.id.checkbox_on_off) as CheckBox//Seleciona o elemento Checkbox pelo seu ID
Log.d("CheckBox", "${checkBox.isChecked}")//Aqui estamos recuperando o valor do checkbox (True se estiver marcado, false se não estiver)
checkBox.isChecked = false//Aqui estamos mudando o valor do checkbox para false (desmarcado)
Trabalhando com Eventos
Quando trabalhamos com o Checkbox conseguimos escutar os eventos que o usuário realiza nele, como o simples fato de clicar dentro dele.
Para escutar os eventos, você precisa dizer ao Checkbox que a classe atual se responsabiliza por responder e captar os eventos:
val checkBox = findViewById<View>(R.id.checkbox_on_off) as CheckBox//Seleciona o elemento Checkbox pelo seu ID
checkBox.setOnCheckedChangeListener(this)//Estamos definindo que a classe atual se responsabiliza por tratar todos os eventos do checkbox
Em seguida basta fazer a implementação da classe do CompoundButton na sua Activity da seguinte forma:
class MainActivity : AppCompatActivity(), CompoundButton.OnCheckedChangeListener {
...
}
E é claro, implementar os seus métodos obrigatórios:
override fun onCheckedChanged(button: CompoundButton?, isChecked: Boolean) {
TODO("Not yet implemented")
}
onCheckedChange: Método só é chamado quando o usuário interage com o Checkbox.
É retornado dois parâmetros, o button que é a instância do objeto que foi clicado, e o isChecked que retorna um valor booleano, informando se o checkbox está marcado (true) ou desmarcado (false).
Conflito com Switch
Se você já passou pelo artigo que fala sobre SwitchCompact, você deve ter visto que tanto o elemento CheckBox quanto o elemento SwitchCompact, compartilham de um mesmo método de evento, o onCheckedChange.
Pode acontecer de você implementar tanto um Switch quanto um Checkbox na mesma tela, ocasionando a mesma chamada de função.
Para diferenciar e saber quando o usuário clicou no CheckBox ou no Switch, você pode diferencia-los por meio do parâmetro button da seguinte forma:
override fun onCheckedChanged(button: CompoundButton?, isChecked: Boolean) {
when(button.id){
R.id.checkbox_on_off -> {
//O que fazer quando o button for o checkbox
}
R.id.switch_on_off -> {
//O que fazer quando o button for um Switch
}
}
}
Caso existir mais de um checkbox, basta separa-los por ID e identifica-los como estamos fazendo no código acima.
Conclusão
Neste conteúdo você aprendeu a criar o elemento Checkbox.
Até o próximo conteúdo.