Sunday, April 20, 2014

Widget căn bản & Quản lý sự kiện

Các Widget căn bản

Bao gồm:
  1. Textview: để hiển thị chuỗi dạng label.
  2. Edittext: để nhận dữ liệu từ bàn phím, có thể là chuỗi, số, tiền tệ, mật khẩu, định dạng viết hoa đầu mỗi từ, viết hoa đầu mỗi câu....
  3. Button: là nút bấm cơ bản
  4. Checkbox: là nút hộp kiểm cơ bản
  5. RadioButton: là nút radio cơ bản, nó thường được bọc theo nhóm radio group.
  6. ImageView: là widget dùng để hiển thị ảnh trong Android.
  7. ImageButton: là nút bấm có chèn ảnh biểu tượng bên trong.
Ngoài ra Android còn rất nhiều widget đặc trưng khác như DateTime Picker, Spinner, Rating Bar, Progress Bar, Switch button, Listview, GridView, Sliding Drawable....

Quản lý sự kiện

Bao gồm:

  1. Hàm sự kiện bên ngoài Activity.
  2. Hàm sự kiện bên trong Activity.
  3. Hàm sự kiện gán trực tiếp cho widget.
  4. Activity được implement sự kiện.
  5. Sự kiện được gán trên layout xml.

Hàm sự kiện bên ngoài Activity

  • Ưu điểm: code được tổ chức tốt, dễ bảo trì và sử dụng lại.
  • Nhược điểm: muốn sử dụng phải khởi tạo đối tượng, hàm thực hiện phải là public.


Hàm sự kiện bên trong Activity

  • Ưu điểm: có thể thay đổi dữ liệu trực tiếp ngay bên trong Activity, kể cả các dữ liệu dạng private.
  • Nhược điểm: lớp lắng nghe sự kiện nằm trong cùng Activity nên việc tổ chức code không tường minh, khó sửa chữa, bảo trì hoặc nâng cấp.


Hàm sự kiện gán trực tiếp cho widget.

  • Ưu điểm: cấu trúc code viết nhanh, gọn.
  • Nhược điểm: chỉ có thể áp dụng cho một control, nhiều hơn thì phải copy/paste, nếu đoạn mã xử lý dài sẽ khiến cho code khó đọc.


Activity được implement sự kiện.

  • Ưu điểm: thích hợp cho trường hợp muốn xử lý cùng thể loại sự kiện (vd: onClickListener).
  • Nhược điểm: nếu xử lý nhiều hơn một loại sự kiện sẽ gây rối code, đồng thời cũng không thể truyền tham số cho Listener.


Sự kiện được gán trên layout xml.

  • Ưu điểm: mã code đơn giản.
  • Nhược điểm: không rõ ràng trong cách xử lý từ mã nguồn Java vì chương trình sẽ không kiểm soát được lỗi (ví dụ như sự kiện được gán trên layout xml nhưng mã xử lý lại không được viết trên Activity => lỗi).


No comments:

Post a Comment