[Android] Spinner in Android

spinner cho phép chúng ta có 1 bảng chọn sẵn dạng như thế này:
spinner in android

Để có thể đặt các giá trị cho spinner ta có 2 cách thực hiện là đặt sẵn giá trị trong file res/values/strings.xml hoặc đặt ngay trong file *.java.

Trước tiên ta làm 1 cái giao diện đơn giản đã.
file *.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
	    <TextView 
	        android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:gravity="center_horizontal"
	        android:text="My Spinner 1"/>
    </LinearLayout>
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
	    <Spinner 
	        android:id="@+id/spin"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:gravity="center_horizontal"/>
    </LinearLayout>
    
</LinearLayout>

Sau đó ta có thể nhìn trong tab Graphics cal có dạng sau (hơi xấu nhưng sau khi chạy sẽ có dạng như hình bên trên)
spinner in android

Tiếp theo ta cài đặt các giá trị trong spinner:

Cách 1: Cài đặt ngay trong Java.

package android.spinner;

import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class MainActivity extends Activity {
	Spinner sp;
	ArrayAdapter<String> adapter; //tạo vector adapter để truyền vào spinner
	String numbers[] = { "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN" };
	// number[] là các giá trị của spinner khi hiện ra
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
	   	setContentView(R.layout.activity_main);
	   	
	   	sp = (Spinner) findViewById(R.id.spin);
	   	//set các giá trị của number vào adapter
	   	adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, numbers);
	   	//set adapter vào sp (spinner)
	 	sp.setAdapter(adapter);
	 }
}

Kết quả của chúng ta:
spinner in android

Cách 2: Cài đặt các giá trị từ file res/values/strings.xml

Cũng với giao diện đã cài như trên. Ta thêm vào file strings.xml đoạn code sau:

<string-array name = "day"> <!--Tên của mảng-->
	    <item>Monday</item>
	    <item>Tuesday</item>
	    <item>Wednesday</item>
	    <item>Thursday</item>
	    <item>Firday</item>
	    <item>Saturday</item>
	    <item>Sunday</item>
	</string-array>

Tiếp theo ta làm việc với file *.java

package android.spinner1;

import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class MainActivity extends Activity {
	ArrayAdapter<CharSequence> adapter;
	Spinner sp;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		sp = (Spinner) findViewById(R.id.spin);
		//Lấy giá trị của mảng "day" trong file string.xml bằng lệnh sau ("R.array.day" là tên mảng giá trị trong file string)
		adapter = ArrayAdapter.createFromResource(this, R.array.day, android.R.layout.simple_spinner_item); 
		//set các giá trị vào spinner
		sp.setAdapter(adapter);
	}
}

Và Kết quả của chúng ta:
spinner in android