Spinner Trong Android
Spinner trong Android tương tự như ComboBox trong Java/C#, cho phép bạn chọn một item từ danh sách thả xuống. Hình bên dưới trình bày cách spinner hiển thị
Spinner được liên kết với AdapterView. Vì vậy, chúng ta cần phải sử dụng một trong các lớp adapter để kết nối dữ liệu cho Spinner.
Lớp Spinner là lớp con của lớp AsbSpinner
Spinner code trong XML:
<Spinner android:id="@+id/simpleSpinner " android:layout_width="fill_parent" android:layout_height="wrap_content" />
ArraryAdapter:
Một ArraryAdapter là một đối tượng của một lớp cài đặt giao diện Adapter
. Nó đóng vai trò như là một liên kết giữa một tập hợp dữ liệu và một Adapter View, một đối tượng của một lớp thừa kế lớp trừu tượng AdapterView
. Tập hợp dữ liệu có thể là bất cứ điều gì mà trình bày dữ liệu một cách có cấu trúc. Mảng các đối tượng List
và các đối tượng Cursor
thường sử dụng bộ dữ liệu.
Cú pháp tạo ArrayApdater:
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
Các sự kiện thường dùng trong Spinner
setOnItemSelectedListener Sự kiện này xảy ra khi người dùng click chọn Spinner. Xem ví dụ sau:
spnMobile.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(getApplication(), "Bạn đã chọn mục:"+mobilePhones[arg2], Toast.LENGTH_LONG).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } });
- onItemSelected: gọi phương thức này được gọi khi có một sự kiện chọn item nào đó. Trong đó, tham số thứ 3 arg2 là vị trí cùa Spinner, tham số thứ 4 arg3 là id của mỗi dòng của Spinner.
- onNothingSelected: phương thức này được gọi khi click vào Spinner mà không chọn item nào cả.
Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng gồm có một Spinner. Trước tiên, chúng ta tạo 1 mảng chuỗi dữ liệu. Tiếp theo, chúng ta thiết lâp sự kiện cho Spinner khi người sử dụng chọ mục dữ liệu sẽ hiển thị giá trị ra màn hình thông qua đối tượng Toast. Tiến hành tạo project, vào thư mục res /layout -> activity_main.xml thiết kế giao diện sau:
Bước 1: Tạo một project tên là Spinner: File->New->Android Application Project điền các thông tin ->Next ->Finish
Bước 2: Mở res -> layout -> xml (hoặc) activity_main.xml và thêm code trong Relaytive Layout.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="hiepsiit.com.spinnerarrayadapter.MainActivity" > <Spinner android:id="@+id/spinner1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="92dp" /> </RelativeLayout>
Bước 3: Mở src -> package -> MainActivity.java
Trong bước này chúng ta khởi tạo Spinner. Tiếp theo, chúng ta tạo 1 mảng dữ liệu và kết nối Spinner thông qua đối tượng ArrayAdapter. Trong bước này chúng ta cũng thiết lập sự kiện setOnItemSelectedListener(new OnItemSelectedListener() ) cho Spinner.
package hiepsiit.com.spinner; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity { String mobilePhones[]={"Nokia","Samsung","Iphone","HTC","BPhone","MobileStar"}; Spinner spnMobile; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spnMobile = (Spinner) findViewById(R.id.spinner1); ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mobilePhones); adapter.setDropDownViewResource(android.R.layout.select_dialog_singlechoice); spnMobile.setAdapter(adapter); spnMobile.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(getApplication(), "Bạn đã chọn mục:"+mobilePhones[arg2], Toast.LENGTH_LONG).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); } }
Ứng dụng này được phát triển bởi adt bundle, android 4.2 sử dụng minimum sdk 11 and target sdk 21.
Kết quả khi chạy ứng dụng
Click vào Spinner chọn 1 mục:
Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com