Bài 14: Spinner trong Android

Hôm nay chúng ta sẽ học qua tiếp một View mới đó là Spinner, đây là view cũng ít khi sử dụng tuy nhiên những lập trình viên chuyên nghiệp hay khi đi làm thì kiểu gì cũng đụng đến nó thôi, thế nên biết còn hơn không chúng ta cứ tiềm hiểu chứ mắc gì đúng không nào?

Giới thiệu Spinner

Spinner là view sử dụng để hiển thị lên một list các danh sách giống như listview mà chúng ta sẽ học ở phần sau, tuy nhiên bạn thường chỉ chọn 1 lựa chọn trong 1 danh sách đó thôi.

Spinner trong lập trình Android

Spinner trong lập trình Android

Vậy nó áp dụng trong những trường hợp nào đây? Nhìn vào hình là bạn có thể thấy ngay liền đúng không nào? Những trường hợp cần sổ ra một đống danh sách cho người ta chọn một cái như: lựa chọn ngôn ngữ, nơi sinh, thành phố… thì đa số điều sử dụng Spinner.

Các bạn lưu ý là Spinner nếu custom lại thì có thể chọn được nhiều lựa chọn (multiselect) chứ không phải chỉ chọn được 1 cái thôi đâu nhé.

Cách dùng Spinner

Bây giờ chúng ta sẽ đi code layout và sử lí sự kiện giống như hình ở phía trên, khi người dùng chọn vào một item nào đó thì ta Toast thông báo lên cái tên của Item đó thôi, rất là đơn giản đúng không nào?

Layout bạn sẽ làm như sau:


Ở đoạn code xml trên chẳng có gì để chúng ta không hiểu cả, toàn những cái cơ bản mà ta đã học ở những bài trước khi thiết kế layout rồi, bây giờ là đoạn code xử lí bằng Java ở MainActivity nhé:


Bạn học qua Java thì biết về ArrayList rồi đúng không nhỉ, ở trên mình tạo một ArrayList để lưu lại các item sẽ show lên khi click vào Spinner.Các bạn nhớ là ở đây là một mảng String nhé.


Ta có được đối tượng ” list “ , nó chứa các phần tử như: Java, Android, PHP, C#, ASP.NET.

Tiếp theo bạn sẽ thấy dòng này:


Đây là kiến thức mới và ở bài 17 trở đi mình sẽ nói nhiều về thằng này nên bạn cứ iên tâm, sau này cứ làm gì mà sử dụng đến danh sách bạn đều phải sử dụng thằng ArrayAdapter này cả.

Ở đây ArrayAdapter chính là cầu nối trung gian giữa View và dữ liệu, như trên dữ liệu ở đây chính là thằng list , dữ liệu không thể đưa trực tiếp lên View mà phải thông qua thằng này mới được, bản chất nó như vậy thôi nên mọi người đừng tìm hiểu gì nhiều cho mệt, kệ đi cứ làm rồi sẽ hiểu.

Ở đây có 3 tham số truyền vào là :

  • this: chính là lấy ra Activity hiện tại
  • android.R.layout.simple_spinner_item : đây là một mẫu hiển thị danh sách mà android đã đinh nghĩa sẵn, ở trên bạn có thể thấy các item sắp xếp theo chiều dọc và từng hàng, có màu chữ là màu đen.Nếu bạn muốn màu chữ là màu xanh chẳng hạn thì bạn có thể custom lại và thay thế thằng android.R.layout.simple_spinner_item bằng một file layout của bạn.
  • list: là danh sách một Objects nào đó, String cũng là một Object nhé các bạn.

Tiếp theo:


Dòng trên có nghĩa là định dạng cho thằng Spinner này kiểu single choise, khi add phương thức trên vào bạn sẽ thấy nút tròn màu hồng khi bạn chọn một item nào đó, nhìn lại trên ảnh trên sẽ thấy, nếu không có dòng này bạn sẽ không thấy biểu tượng đó đâu.

Tiếp theo:


Dòng này có nghĩa là set Adapter trên vào thằng spinner, nãy giờ bạn đã làm giao diện, đưa dữ liệu vào Adapter rồi thì bây giờ chỉ việc đưa nó lên thằng Spinner thôi, đó là ý nghĩa dòng lệnh trên.

Bắt sự kiện khi bạn chọn vào một item trong Spinner sẽ như sau:


Ở bài hướng dẫn bắt sự kiện Onlick mình đã hướng dẫn khá kĩ rồi đúng không nào, ở đây bạn sẽ không bắt sự kiện onClick vào Spinner mà bạn sẽ bắt sự kiện OnClick vào Item của Spinner luôn vì thông thường chúng ta cần lấy ra giá trị của item người dùng select mà.

Dù là bắt sự kiện nào đi nữa thì nó cũng như nhau cả thôi nhé các bạn.

Ở đây khi setOnItemSelectedListener cho Spinner sẽ bắt bạn Override 2 phương thức là:

  • onItemSelected: gọi hàm này khi có một sự kiện chọn item nào đó.
  • onNothingSelected: gọi hàm này khi click vào Spinner mà không chọn item nào cả

Dựa vào yêu cầu bài toàn mà bạn xử lý thôi chứ cái này không có gì khó cả, ở đây mình show lên một Toast lấy ra giá trị của item đã được chọn.

Cơ bản thằng Spinner chỉ có như vậy thôi, nếu bạn có thắc mắc hay ý kiến gì cứ comment bên dưới nhé.

Video hướng dẫn Spinner trong Android

Download Source Code


Chúc các bạn thành công!

Tiếp theo

Bài 14: Spinner trong Android
5 (100%) 3 votes

One Response

  1. minh đại September 20, 2017

Add Comment

*