Checkbox và RadioButton - học lập trình android cơ bản

Tiếp tục hôm nay chúng ta sẽ tìm hiểu cách sử dụng CheckBox và RadioButton. Đây cũng là hai control thường xuyên được sử dụng trong các chương trình. Kết thúc bài hôm nay là chúng ta đã tìm hiểu xong các control cơ bản nhất phục vụ học lập trình android và phục vụ cho việc lập trình của các bạn sau này. 
Bắt đầu tìm hiểu nào.

1. Khái niệm và cách sử dụng
CheckBox là control dùng để chuyển đổi trạng thái giữa yes/no/true/false. Khi state là true thì ô được đánh dấu.
RadioButton là một nút chọn, ở đây nó thể hiện nhiều sự lựa chọn khác nhau, người dùng ấn vào một hoặc nhiều nút tương ứng với các lựa chọn của họ.
Trong Android thì CheckBox và RadioButton đều sử dụng chung 2 phương thức:
– Phương thức setChecked, dùng để thiết lập checked. Nếu ta gọi setChecked (true) tức là cho phép control được checked, con gọi setChecked (fasle) thì control sẽ bị unchecked.
– Phương thức isChecked, kiển tra xem control có được checked hay không. Nếu có checked thì trả về true ngược lại trả về fasle.
Tuy sử dụng cùng phương thức nhưng hai control này có sự khác biệt: Checkbox cho phép ta checked nhiều đối tượng, còn RadioButton thì tại một thời điển nó chỉ cho ta checked 1 đối tượng trong cùng một group mà thôi.
Nếu muốn sử dụng nhiều lựa chọn thì bạn nên sử dụng checkbox, ví dụ ở hình bên dưới:

control android cơ bản-học lập trình android


Ta có thể thiết lập cho Checkbox bất kỳ được checked mặc định trong XML:



Trong coding để kiểm tra xem Checkbox đó có được checked hay không thì chúng ta xử lý như sau:

control android cơ bản-học lập trình android

Nếu bạn muốn người dùng chỉ được chọn 1 lựa chọn trong nhiều loại lựa chọn đưa ra thì bạn nên sử dụng RadioButton, ví dụ hình dưới đây:

control android cơ bản-học lập trình android

Tương tự như Checkbox, chúng ta có thể thiết lập checked cho RadioButton bất kỳ trong XML:

control android cơ bản-học lập trình android

Nhìn vào đoạn thiết lập trên , chúng ta phải sử dụng RadioGroup để gom nhóm các Radiobuton lại cùng một nhóm nào đó, những RadioButton mà cùng một nhóm thì tại 1 thời điểm chỉ có 1 RadioButton được checked mà thôi. Có thể tạo nhiều nhóm RadioButtonGroup trong một màn hình.
Chúng ta có hai cách xử lý RadioButton như sau:
Cách 1: dựa vào RadioButton để biết chính xác Id của Radiobutton nào được checked. Dựa vào id này ta sẽ xử lý:

control android cơ bản-học lập trình android

Trong đoạn xử lý trên, hàm getCheckedRadioButton(): hàm này trả về ID của RadioButton nằm trong RadioGroup 1 được checked. Dựa vào Id này bạn so sánh để biết được trên giao diện người sử dụng đang check lựa chọn nào.
Cách 2: kiểm tra trực tiếp RadioButton đó có được check hay không?

control android cơ bản-học lập trình android


Cách xử lý khác nhau nhưng có chung một mục đích. Để xóa bỏ check trong group (dù sử dụng cách 1 hay cách 2) thì ta sử dụng lệnh:  group.clearChecked();  //với group là đối tượng RadioGroup.

2. Ví dụ minh họa
Bây giờ chúng ta sẽ xét một ví dụ kết hợp giữa RadioButton và CheckBox để các bạn hiểu sâu hơn về 2 control này. Giao diện như hình dưới đây:

control android cơ bản-học lập trình android


Mô tả giao diện:
– Tên người không được để trống và phải có ít nhất 3 ký tự
– Chứng minh nhân dân chỉ được nhập kiểu số và phải có đúng 9 chữ số
– Bằng cấp mặc định sẽ chọn là Đại học
– Sở thích phải chọn ít nhất 1 chọn lựa
– Thông tin bổ sung có thể để trống
– Khi bấm gửi thông tin, chương trình sẽ hiển thị toàn bộ thông tin cá nhân cho người sử dụng biết (dùng Alert Dialog):

control android cơ bản-học lập trình android

Sau đây là code trong MainActivity:
package tranduythanh.com;
import android.os.Bundle; import android.app.Activity;
import android.app.AlertDialog; import android.content.DialogInterface;
import android.view.Menu; import android.view.View;
import android.widget.Button; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.Toast;
public class MainActivity extends Activity {
EditText editTen,editCMND,editBosung;
CheckBox chkdocbao,chkdocsach,chkdoccode;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTen=(EditText) findViewById(R.id.editHoten);
editCMND=(EditText) findViewById(R.id.editCMND);
editBosung=(EditText) findViewById(R.id.editBosung);
chkdocbao=(CheckBox) findViewById(R.id.chkdocbao);
chkdoccode=(CheckBox) findViewById(R.id.chkdoccoding);
chkdocsach=(CheckBox) findViewById(R.id.chkdocsach);
Button btn=(Button) findViewById(R.id.btnguitt);
btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stubdoShowInformation();}
});}
public void doShowInformation()
{//Kiểm tra tên hợp lệ
String ten=editTen.getText()+””; ten=ten.trim();
if(ten.length()<3)
{editTen.requestFocus(); editTen.selectAll();
Toast.makeText(this, “Tên phải >= 3 ký tự”, Toast.LENGTH_LONG).show();
return;}
//kiểm tra CMND hợp lệ
String cmnd=editCMND.getText()+””; cmnd=cmnd.trim();
if(cmnd.length()!=9)
{ editCMND.requestFocus(); editCMND.selectAll();
Toast.makeText(this, “CMND phải đúng 9 ký tự”, Toast.LENGTH_LONG).show();
return;}
//Kiểm tra bằng cấp
String bang=””;
RadioGroup group=(RadioGroup) findViewById(R.id.radioGroup1);
int id=group.getCheckedRadioButtonId();
if(id==-1)
{ Toast.makeText(this, “Phải chọn bằng cấp”, Toast.LENGTH_LONG).show();
return;}
RadioButton rad=(RadioButton) findViewById(id); bang=rad.getText()+””;
//Kiểm tra sở thích
String sothich=””;
if(chkdocbao.isChecked()) sothich+=chkdocbao.getText()+”\n”;
if(chkdocsach.isChecked()) sothich+=chkdocsach.getText()+”\n”;
if(chkdoccode.isChecked())
sothich+=chkdoccode.getText()+”\n”; String bosung=editBosung.getText()+””;
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle(“Thông tin cá nhân”);
builder.setPositiveButton(“Đóng”, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();}});
//tạo nội dung
String msg=ten+”\n”; msg+= cmnd+”\n”; msg+=bang+”\n”;
msg+=sothich; msg+=”—————————–\n”;
msg+=”Thông tin bổ sung:\n”; msg+=bosung+ “\n”;
msg+=”—————————–“; builder.setMessage(msg);//thiết lập nội dung
builder.create().show();//hiển thị Dialog
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}}

Trên đây chúng tôi đã giới thiệu sơ lược xong về 2 control cơ bản còn lại cùng các bạn, chắc hẳn các bạn cũng đã hiểu được phần nào đó về Checbox và Radiobutton rồi nhỉ ^_^.

0 nhận xét:

Copyright © 2013 ĐÀO TẠO LẬP TRÌNH TẠI HÀ NỘI and Blogger Templates - Anime OST.