본문 바로가기
Android/Concepts

Spinner 사용법

by JuHy_ 2020. 3. 24.

Spinner란?

Spinner는 사용자가 여러 선택지 중 하나를 고르게 하고 싶을 때 사용하는 위젯이다.

다른 환경에서는 주로 ComboBox라고 불린다.

 

사용법

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

먼저 xml에 적당한 크기의 spinner를 생성해준다.

생성해주었다면 activity로 이동해보자.

 

package com.juhy.myapplication;

import androidx.appcompat.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 {

    String[] items = {"버그신고", "문의", "기타"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Spinner spinner = findViewById(R.id.spinner);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_spinner_item, items);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(getApplicationContext(), items[position], Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                Toast.makeText(getApplicationContext(), "선택되지 않음", Toast.LENGTH_LONG).show();
            }
        });
    }
}

activity에서는 제일 먼저 spinner 객체를 생성하여 불러온다.

 

spinner를 사용하기 위해서는 리스트뷰처럼 데이터와 spinner를 이어주는 adapter를 만들어주어야 한다.

기본적으로 안드로이드에서 제공하는 ArrayAdapter를 사용해서 구현해보자.

adapter 객체의 생성자에는 context, spinner 아이템의 디자인, 그리고 띄워줄 데이터를 넣어주어야 한다.

그 다음 생성된 adapter를 통해 spinner를 클릭했을 때 펼쳐지는 리스트의 디자인도 지정해주었다.

 

adapter 설정이 끝났다면 spinner에 adapter를 지정해준다.

 

그리고 추가적으로 사용자가 spinner의 아이템을 선택했을 때 처리하기 위한 이벤트 리스너를 만들어주었다.

onItemSelected 함수의 파라미터에는 선택된 아이템의 위치를 나타내는 position 변수가 있다.

이를 통해 넣어준 데이터 배열에서 position 변수로 선택된 아이템을 찾을 수 있다.

그리고 이를 toast를 통해 띄워주었다.

 

 

실행해보면 spinner가 정상적으로 떠 있고, 첫번째의 아이템이 선택되어 있다.

spinner를 클릭하면 목록이 펼쳐지고, 아이템을 선택 시 정상적으로 toast가 뜨는 것을 볼 수 있다.

 

 

Reference

[부스트코스]안드로이드 프로그래밍

https://www.edwith.org/boostcourse-android

'Android > Concepts' 카테고리의 다른 글

Activity란?  (0) 2020.03.31
GridView 사용법  (0) 2020.03.24
ListView 사용법  (0) 2019.08.21
Inflation과 Layout Inflater  (1) 2019.08.09
Button을 상속받아 커스텀 Button 만들어보기  (0) 2019.08.08