티스토리 뷰

스피너는 HTML selector와 비슷한 기능으로 콤보 박스 안에 데이터를 하나 선택할 수 있도록 하는 위젯이다.

 

레이아웃 파일에 spinner 태그를 추가하여 간단하게 사용할 수 있다. 

 


◎activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" android:orientation="vertical">
    <TextView
            android:text="선택한 아이템"
            android:textSize="30sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView"/>

    <Spinner
            android:layout_width="match_parent"
            android:layout_height="wrap_content" android:id="@+id/spinner"/>

</LinearLayout>

 

◎MainActivity.java

package com.example.samplespinner;

import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    TextView textView;
    String[] items = {"111", "222", "333", "444", "555", "666"};

    @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);

        spinner.setAdapter(adapter);

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

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

 

코드를 보면, 스피너 객체도 선택 위젯이기 때문에 setAdapter메서드의 파라미터로 어댑터 객체를 전달해야 한다. 

하지만 스피너 객체는 API에서 제공하는 ArrayAdapter 를 사용하여 배열로 된 데이터를 아이템으로 추가할 수 있다.

 

ArrayAdapter의 생성자 메서드는 첫 파라미터로 Context 를 받고, 두번째 파라미터로는 뷰 객체를 초기화할 때 사용하는 xml 레이아웃의 리소스 ID값이며, 세번째로는 아이템으로 보일 데이터의 배열을 전달한다. 

 


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

[Android] Runnable  (0) 2022.04.06
[Android] Thread & Handler  (0) 2022.04.05
[Android] 선택 위젯 3: Recycler View  (0) 2022.04.03
[Android] 선택 위젯 2: CardView  (0) 2022.04.02
[Android] 선택 위젯 1: 새로운 뷰 객체 생성  (0) 2022.04.02
Comments