Android 스피너(Spinner)란?
스피너(Spinner)는 드롭다운 버튼과 비슷한 안드로이드 위젯으로, 미리 준비된 여러 항목 중에서 하나를 선택할 수 있게 해주는 UI 요소입니다. 이번 글에서는 안드로이드 앱에서 스피너에 항목을 추가하고, 사용자가 항목을 선택했을 때 이벤트를 처리하는 방법까지 단계별로 알아보겠습니다.
1단계: 새 프로젝트 생성
Android Studio를 실행한 뒤 File ⇒ New Project 메뉴로 이동하여 새 프로젝트를 만들고, 프로젝트 생성에 필요한 정보를 모두 입력합니다.
2단계: 레이아웃 파일 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가하여 스피너를 배치합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout
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">
<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:gravity = "center"
android:orientation = "vertical">
<Spinner
android:id = "@+id/spinner"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:prompt = "@string/app_name"
/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>3단계: MainActivity 코드 작성
src/MainActivity.java 파일에 아래 코드를 추가합니다.
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner = findViewById(R.id.spinner);
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("JAVA");
arrayList.add("ANDROID");
arrayList.add("C Language");
arrayList.add("CPP Language");
arrayList.add("Go Language");
arrayList.add("AVN SYSTEMS");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, arrayList);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(arrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String tutorialsName = parent.getItemAtPosition(position).toString();
Toast.makeText(parent.getContext(), "Selected: " + tutorialsName,
Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView <?> parent) {
}
});
}
}코드 핵심 살펴보기
위 코드의 핵심은 ArrayList에 표시할 항목들을 담은 뒤, 이를 ArrayAdapter에 연결하여 스피너에 적용하는 부분입니다.
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("JAVA");
arrayList.add("ANDROID");
arrayList.add("C Language");
arrayList.add("CPP Language");
arrayList.add("Go Language");
arrayList.add("AVN SYSTEMS");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, arrayList);- ArrayList: 스피너에 표시할 문자열 항목들을 순서대로 저장합니다.
- ArrayAdapter: 데이터 목록과 스피너 UI를 연결하는 역할을 하며, setDropDownViewResource()로 드롭다운 목록의 모양을 지정합니다.
- setOnItemSelectedListener(): 사용자가 항목을 선택했을 때 onItemSelected() 콜백이 호출되며, 여기서 Toast로 선택된 항목을 화면에 알려줍니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 열고, 툴바의 실행(Run) 아이콘을 클릭하세요. 기기 선택 목록에서 사용 중인 모바일 기기를 고르면, 해당 기기 화면에 앱의 기본 화면이 나타납니다.

스피너를 눌러 원하는 항목을 선택하면 아래 그림처럼 선택 결과가 표시됩니다.
