Android Spinner

2023. 12. 4. 10:27·Android
728x90

Spinner란 위와 같이 드롭다운 형태로 사용자가 원하는 아이템을 선택할 수 있도록 해주는 레이아웃입니다.

 

Spinner 레이아웃 만들기

먼저 xml 파일에 Spinner 레이아웃을 만듭니다.

<TextView
    android:id="@+id/categoryTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="테스트 카테고리"
    android:textColor="@color/black"
    android:textStyle="bold"
    android:textSize="16sp"
    android:layout_marginLeft="16dp"
    app:layout_constraintEnd_toStartOf="@id/categorySpinner"
    app:layout_constraintStart_toStartOf="parent"/>

<Spinner
    android:id="@+id/categorySpinner"
    android:layout_width="120dp"
    android:layout_marginLeft="30dp"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toEndOf="@+id/categoryTextView" />
  • TextView 는 Spinner 의 아이템들이 어떤 집합에 속하는지 나타내기 위해 만들었습니다.
  • Spinner 안에 들어갈 아이템들을 저장하기 위해 values/string.xml 파일에 string array를 만듭니다.
<resources>
  	<string-array name="category_array">
      <item>테스트1</item>
      <item>테스트2</item>
      <item>테스트3</item>
      <item>테스트4</item>
    </string-array>
</resources>

ArrayAdapter 생성하기

Activity 혹은 Fragment 에서 ArrayAdapter 를 생성하여 Spinner 에 적용해줍니다.

private fun initSpinner() {
    ArrayAdapter.createFromResource(
        requireContext(),
        R.array.category_array,
        android.R.layout.simple_spinner_item
    ).also { adapter ->
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        binding.categorySpinner.adapter = adapter
    }
    
    binding.categorySpinner.onItemSelectedListener =
        object: AdapterView.OnItemSelectedListener {
            override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
                if (p0 != null) {
                    Toast.makeText(requireContext(),p0.getItemAtPosition(p2).toString(),Toast.LENGTH_SHORT).show()
                }
            }

            override fun onNothingSelected(p0: AdapterView<*>?) {
                return
            }
        }
}

데이터바인딩을 사용중이므로 binding.categorSpinner.adapter = adapter 로 Spinner 에 Adapter 를 적용했습니다.

// 데이터 바인딩을 사용하지 않을때
val categorySpinner: Spinner = findViewById(R.id.categorySpinner)

category.adapter = adapter

데이터 바인딩을 사용하지 않으면 위처럼 어댑터를 적용합니다.

AdapterView.OnItemSelectedListener 를 구현하여, 아이템이 선택되었을때 실행할 내용을 구현할 수 있습니다.

위에서는 간단하게 선택된 아이템을 Toast로 띄워줬습니다.

728x90
LIST

'Android' 카테고리의 다른 글

Android 인앱 상품(IAP) 등록  (1) 2025.05.21
안드로이드 개발자 면접 질문 리스트  (1) 2025.02.18
Android - Garbage Collection(GC)  (2) 2023.11.08
Android - Manifest & Components  (0) 2023.11.08
Android Layout  (1) 2023.09.04
'Android' 카테고리의 다른 글
  • Android 인앱 상품(IAP) 등록
  • 안드로이드 개발자 면접 질문 리스트
  • Android - Garbage Collection(GC)
  • Android - Manifest & Components
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (179) N
      • Flutter (67)
      • Android (9)
      • Swift (4)
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (71) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    android
    Flutter
    react
    개발
    앱 개발
    뉴스
    오늘의 이슈
    개발 뉴스
    오늘의 뉴스
    DART
    이슈
    Dart 기초
    앱개발
    개발 이슈
    Flutter 기초
    기술
    플러터
    앱
    뉴스 모음
    기술 뉴스
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
Android Spinner
상단으로

티스토리툴바