Lấy giá trị Spinner trong Android
Hướng dẫn này minh họa cách tạo Spinner (dropdown) và lấy giá trị được chọn trong Android.
Bước 1: Tạo dự án mới
Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.
Bước 2: Thiết kế giao diện (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16sp"
tools:context=".MainActivity">
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
</Spinner>
</RelativeLayout>
Bước 3: Cấu hình dữ liệu (res/values/strings.xml)
<resources>
<string name="app_name">Sample</string>
<string-array name="birds">
<item>crane</item>
<item>Cuckoo</item>
<item>Pigeon</item>
<item>Eagle</item>
<item>Owl</item>
<item>Vulture</item>
<item>WoodPecker</item>
</string-array>
</resources>
Bước 4: Code MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = findViewById(R.id.spinner);
// Tạo adapter từ string-array resource
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.birds, android.R.layout.simple_spinner_item);
// Layout cho dropdown list
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Lấy giá trị được chọn
String selectedText = parent.getItemAtPosition(position).toString();
// Hoặc: String selectedText = spinner.getSelectedItem().toString();
Toast.makeText(parent.getContext(), "Selected: " + selectedText, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// Không chọn gì (hiếm khi xảy ra)
}
}
Bước 5: Cấu hình AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Chạy ứng dụng
Kết nối thiết bị, chạy app. Nhấn vào Spinner để mở dropdown, chọn một loài chim. Toast sẽ hiển thị tên loài chim được chọn.
Các phương thức lấy giá trị Spinner:
// Cách 1: Trong onItemSelected (khuyến khích) String text = parent.getItemAtPosition(position).toString(); // Cách 2: Từ spinner object bất cứ lúc nào String text = spinner.getSelectedItem().toString(); int position = spinner.getSelectedItemPosition(); long id = spinner.getSelectedItemId(); // Cách 3: Nếu dùng custom object MyObject obj = (MyObject) spinner.getSelectedItem();
Spinner với Custom Adapter (Đối tượng phức tạp)
// Model
class Bird {
String name;
String scientificName;
int imageResId;
}
// Custom Adapter
class BirdAdapter extends ArrayAdapter<Bird> {
// ... implement getView() để hiển thị tên + hình ảnh
}
// Sử dụng
List<Bird> birds = Arrays.asList(
new Bird("Eagle", "Aquila chrysaetos", R.drawable.eagle),
new Bird("Owl", "Strigiformes", R.drawable.owl)
);
BirdAdapter adapter = new BirdAdapter(this, birds);
spinner.setAdapter(adapter);
Thiết lập giá trị mặc định
// Chọn item tại vị trí 2 (index 2 = Eagle)
spinner.setSelection(2);
// Hoặc chọn theo giá trị
int position = adapter.getPosition("Eagle");
spinner.setSelection(position);