본문 바로가기
Programing/android

[android studio] Spinner 사용하기 combobox처럼 여러아이템 중 하나 선택하기

by Benedictus711 2021. 10. 12.
728x90

Spinner를 사용하여 여러 Item중 하나를 선택하는 기능을 구현해보자.

 

아래 이미지 처럼 콤보박스형태의 컨트롤을 클릭하면

 

 

 

이렇게 여려아이템 중 하나를 선택할 수 있도록 dropdown이 되도록 만들어 보자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

우선, 해당 기능을 구현할 XML Layout에 아래와 같이 Component를 추가해준다.

 

<androidx.appcompat.widget.AppCompatSpinner
            android:id="@+id/spn_SPList"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="30dp"
            android:spinnerMode="dropdown"
            android:popupBackground="#2540FF"            />

 

만일, dropdown기능이 아니라 dialog 처럼 사용할 경우 spinnerMode 옵션을 아래와 같이 변경해 주면 된다.

 

android:spinnerMode="dialog"

 

이후 Item을 추가할 xml을 res/values/ 폴더 밑에 xml을 아래와 같이 생성해 주면 된다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="resources이름">
        <item>아이템1</item>
        <item>아이템2</item>
        <item>아이템3</item>
        <item>아이템4</item>        
    </string-array>
</resources>

 

여기까지 만들어 주면 이제 소스단에서 아래와 같이 순서대로 코드를 넣어주면 된다.

 

먼저, Spinner의 component를 찾아와 잡아주고,
Spinner spn = (Spinner) findViewById(R.id.spn);

 

 

다음 Spinner의 Adapter를 만들어 적용 시켜준다.
spn_adapter = ArrayAdapter.createFromResource(getActivity(), //Activity일 경우 this로
                R.array.[item을 만들어둔 Array xml의 resources이름], 
                android.R.layout.simple_spinner_item);

        spn_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spn.setAdapter(spn_adapter);

createFromResource의 2번째 parameter는 아까 아이템 리스트를 만들어 둔  xml 내용중

<string-array name="resources이름"> 태그부분에 기록한 [resources이름]을 넣어준다.

 

 

Spinner를 클릭하였을 때 사용할 Listener를 아래와 같이 만들어 준다.
spn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                 String a = spn.getItem(i).toString(); 
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

 

Spinner에서 아이템하나를 선택할 경우 위 코드의 Listener안에 onItemSelected Method를 타게 되고,

[spn.getItem(i).toString(); ] 를 사용하여 선택한 아이템의 명칭을 받아와서 이후 동작을 하거나

다른 액션을 할때 참조 할 수 있도록 사용하면 될 것이다.

728x90

댓글