Home Spinner (콤보 박스)
Post
Cancel

Spinner (콤보 박스)

스피너 사용하기

리스트나 격자 모양으로 여러 아이템을 보여주는 경우가 많지만 그 외에도 여러 아이템 중에서

하나를 선택하는 위젯으로 스피너(Spinner)가 있다.

스피너는 일반적으로 윈도우에서 콤보 박스라고 한다.

아이폰이나 안드로이드 단말에서는 손가락으로 쉽게 터치할 수 있도록 별도의 창으로

선택할 수 있는 데이터 아이템들이 표현된다.


예제

MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class MainActivity extends AppCompatActivity {
    TextView textView;

    String [] items = {"mike", "angel", "corw", "john","ginnie", "sally", "cohen", "rice" };

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

        textView = findViewById(R.id.textView);

        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                   //<?>는 < ? extends Object >와 같음
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                textView.setText(items[position]);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                textView.setText("");
            }
        });
    }
}

아이템이 하나 선택되면 onItemSelected 메서드가 자동으로 호출된다.

그리고 선택된 값은 setText 메서드를 사용해 텍스트로 표시한다.

스피너 객체가 아이템 선택 이벤트 처리를 할 수 있도록 사용하는 리스너는 OnItemSelectedListener이다.

스피너 객체도 선택 위젯이므로 setAdapter 메서드의 매개 변수로 어댑터 객체를 전달해야 한다.

여기서는 어댑터를 직접 정의 하지 않고 API에서 제공하는 기본 어댑터인 ArrayAdapter로 배열로 된

데이터를 아이템으로 추가한다. ArrayAdapter를 만들때는 simpe_spinner_item이라는 레이아웃을 지정한다

simple_spinner_item 레이아웃도 스피너를 간단하게 사용할 수 있도록 API에서 제공하는 레이아웃이다.

그리고 스피너는 항목을 선택하기 위한 창이 따로 있기 때문에 항목을 선택하는 창을 위한 레이아웃도

설정해주어야 한다. 이때 사용 하는 메서드는 setDropDownViewResource 메서드이다.

ArrayAdapter 생성자의 형태는 아래와 같다.

1
public ArrayAdapter(Context context, int textViewResourceld, T[] objects)

첫 번째 매개변수는 Context 객체이므로 this를 전달하면 된다.

두 번째 매개변수는 뷰를 초기화할 때 사용되는 XML 레이아웃의 리소스 ID 값이다.

여기서는 android.R.layout.simple_spinner_item을 전달하였는데 이 레이아웃은 문자열을 아이템으로

보여주는 단순 스피너 아이템의 레이아웃이고 이 레이아웃 안에는 텍스트 뷰 객체가 들어있다.

세번째 매개변수는 아이템으로 보일 문자열 데이터들의 배열이다.

ezgif com-gif-maker

This post is licensed under CC BY 4.0 by the author.