Nesta vídeo aula eu vou fazer a demostração do CheckBox.
Neste meu aplicativo eu coloquei duas Check Boxes.
Uma com o texto "Primeira Opção e outra com o texto "Segunda Opção".
Quando o usuário clica na check box ele recebe uma mensagem que pode ser de
você selecionou ou você cancelou a seleção de uma determinada check box.
Por exemplo, eu vou clicar novamente nessa check box
e a mensagem que eu vou receber é: você cancelou a primeira opção.
Quando eu clicar novamente é: você selecionou a primeira opção.
O mesmo ocorre com a segunda check box.
Ao clicar no botão click me o usuário recebe o resumo do que foi selecionado.
Por exemplo, eu cliquei e o usuário será
informado de que selecionou as duas opções.
Eu adicionei essas check boxes no código xml utilizando a tag CheckBox,
eu utilizei LinearLayout e coloquei no xml duas check boxes, uma abaixo da outra.
A primeira check box eu coloquei como id/checkbox_1
e a segunda check box eu coloquei como id/checkbox_2.
Ambas eu configurei como match_parent para largura e wrap_content para altura.
Elas receberam textos diferentes.
A primeira recebeu como texto a frase primeira opção,
e a segunda recebeu como texto a frase segunda opção.
Percebam que ambas podem receber o atributo onClick
porque elas herdam de botão.
Ambas eu coloquei o mesmo método que será disparado como gatilho,
o nome do método é onCheckboxClicked Eu coloquei onCheckboxClicked para
diferenciar do método que será disparado pelo botão que é o método onClick.
Vamos agora para o método Java.
No código Java, eu comecei criando referências para as duas check
boxes e colocando essas referências como atributo dessa classe.
No método onCheckboxClicked, que será disparado quando algum dos check box for
chamado, eu coloquei a seguinte assinatura: o nome do método
é o nome que eu coloquei no código xml, ele deve ser público,
deve retornar void, e deve receber uma view como parâmetro.
Essa view é simplesmente a check box que foi clicada.
Nesse caso, a primeira coisa que eu faço sempre é transformar essa
view que veio por parâmetro check box fazendo uma conversão,
e logo depois eu verifico se essa check box está sendo clicada,
ou melhor, selecionada ou desselecionada e gravo isso na variável boolean checked.
Feito isso, eu criei switch para verificar se
a checkbox que foi clicada foi a checkbox ou a checkbox dois,
e eu faço isso comparando o id da view que veio por parâmetro com as
ids que eu conheço das checkboxes que são r.id.checkbox_1 r.id.checkbox_2.
Após isso, eu verifico se o que aconteceu foi
a seleção ou a desseleção da checkbox utilizando
a variável checked que eu criei no início do método.
Agora no método onClick.
No método onClick o que eu recebo por parâmetro é o botão
que foi clicado e não a checkbox.
Nesse caso, eu não posso fazer o mesmo que eu fiz anteriormente,
que era simplesmente converter a view que veio por parâmetro para a checkbox.
Por quê?
Porque a view aqui é botão.
Nesse caso, eu preciso do atributo que eu gerei no método
findViewByid com o método findViewByid.
Então, primeiro eu pego esse atributo
que é o checbox_1 e o checkbox_2 que representam as instâncias da checkbox.
E após isso eu verifico se ela está selecionada ou não.
Feito isso, para gerar a mensagem eu simplesmente verifico se ambas
estão selecionadas, eu escrevo para o usuário que ele selecionou as duas opções.
Se apenas a checkbox_1 está selecionada,
eu aviso que ele selecionou apenas a primeira opção.
Se apenas a checkbox_2 está selecionada,
eu aviso que ele selecionou apenas a segunda opção.
Caso contrário eu aviso que o usuário não selecionou nenhuma
opção.