안드로이드 개발자의 창고
[32일차 Android] Spinner 본문
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT
📖 Spinner
- 사용자에게 항목을 주고 산택 하게 할 수 있는 AdapterView
- 작은 스마트폰 화면을 효율적으로 사용할 수 있다는 장점을 가지고 있다.
주요 속성
속성 | 설명 |
spinnerMode | 나타나는 메뉴 항목의 타입을 설정 |
주요 프로퍼티
프로퍼티 | 설명 |
selectedItemPosition | 현재 선택되어 있는 항목이 인덱스(0 부터 시작)를 관리 |
adapter | View 구성을 위한 Adapter를 관리 |
onItemSelectedListener | 항목을 선택했을 때 사용할 리스너를 설정 |
주요 이벤트
이벤트 | 설명 |
ItemSelected | 사용자가 항목을 선택했을 경우 동작, 이 이벤트의 리스너는 프로퍼티로 설정 |
예제 코드
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="선택한 값 가져오기" />
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
MainActivity.kt
package com.test.android35_spinner
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.AdapterView.OnItemSelectedListener
import android.widget.ArrayAdapter
import com.test.android35_spinner.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
lateinit var activityMainBinding: ActivityMainBinding
val dataList = arrayOf(
"항목1", "항목2", "항목3", "항목4", "항목5",
"항목6", "항목7", "항목8", "항목9", "항목10",
"항목11", "항목12", "항목13", "항목14", "항목15",
"항목16", "항목17", "항목18", "항목19", "항목20",
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(activityMainBinding.root)
activityMainBinding.run {
spinner.run {
// 어뎁터 설정
val a1 = ArrayAdapter<String>(
this@MainActivity,
android.R.layout.simple_spinner_item,
dataList
)
a1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
adapter = a1
setSelection(2)
onItemSelectedListener = object : OnItemSelectedListener{
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
textView2.text = "${dataList[position]} 항목을 선택했습니다"
}
override fun onNothingSelected(parent: AdapterView<*>?) {
}
}
}
button.run {
setOnClickListener {
val position = spinner.selectedItemPosition
textView.text = "선택한 항목 : ${dataList[position]}"
}
}
}
}
}
코드 리뷰
- val a1 = ArrayAdapter<String>( ... ) : 어뎁터를 설정한다. Spinner가 접혀있을 때의 Layout을 설정한다.
- a1.setDropDownViewResource( ... ) : Spinner가 펼쳐져 있을 때의 Layout을 설정한다.
- setSelection(0) : Spinner의 항목을 코드로 선택한다. 0부터 시작하는 순서 값을 넣어준다.
- onItemSelectedListener = object : OnItemSelectedListener{ ... } : 항목을 선택하면 동작하는 리스너
- override fun onItemSelected( ... ) : 항목을 선택했을 때 호출되는 메서드
'Computer > Android' 카테고리의 다른 글
[33일차 Android] Permission (0) | 2023.06.17 |
---|---|
[32일차 Android] RecyclerView (0) | 2023.06.16 |
[32일차 Android] ListView - CustomAdapter (0) | 2023.06.15 |
[31일차 Android] ListView - SimpleAdapter (0) | 2023.06.15 |
[31일차 Android] ListView - ArrayAdapter (0) | 2023.06.14 |