반응형
스피너는 위와 같이 여러 개의 값 중에 하나의 값을 선택할 수 있도록 하는 방법 중 하나이다.
스피너는 초기에 기본값으로 설정된 값을 표시하고 있으며,
클릭 시 드롭다운 메뉴를 표시하여 자신이 원하는 값을 선택할 수 있다.
스피너에 제공하는 값들은 SpinnerAdapter를 통해 제공되는데,
값들을 어떠한 자료 구조에서 가져오느냐에 따라 배열의 경우 ArrayAdapter,
데이터베이스 쿼리에서 가져오는 경우 CursorAdapter 등을 사용할 수 있다.
이번 글에서는 ArrayAdapter를 사용하여 배열 구조에서 값들을 가져와보도록 하자.
XML 만들기
스피너에 사용할 값들이 사전에 결정된 경우에는 문자열 리소스 파일을 정의하여 사용할 수 있다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="animals">
<item>토끼</item>
<item>곰</item>
<item>호랑이</item>
<item>사자</item>
<item>고양이</item>
</string-array>
</resources>
먼저, res/values폴더에 array.xml파일을 하나 생성한 뒤 위와 같은 코드를 작성해준다.
Layout 정의
그 후 layout을 정의해주는데, 간단하게 스피너와 선택한 값을 확인하는 버튼 하나만 추가해주자.
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="값 확인" />
Adapter 연결
이제 위의 문자열 배열을 ArrayAdapter를 통해 스피너와 연결해주면 된다.
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
val spin = binding.spinner
spin.adapter = ArrayAdapter.createFromResource(this, R.array.animals, android.R.layout.simple_spinner_item)
binding.button.setOnClickListener {
Toast.makeText(this, spin.selectedItem.toString(), Toast.LENGTH_SHORT).show()
}
}
}
위와 같이 코드를 작성하여 간단한 스피너를 완성해보았다.
또한 스피너에 Adapater를 연결했을 때 아무런 추가 작업도 하지 않으면
기본적으로 가장 첫 번째 값을 기본값으로 가지게 된다.
기본값을 바꾸려면 setSelection()을 사용하여 값을 변경해주면 된다.
반응형
'안드로이드 > 개발관련(Kotlin)' 카테고리의 다른 글
안드로이드 Geofence(지오펜스) (0) | 2021.12.30 |
---|---|
안드로이드 데이터베이스 SQLite(Koltin) (1) | 2021.12.27 |
안드로이드 커스텀 다이얼로그(CustomDialog, Kotlin) (1) | 2021.12.24 |
안드로이드 AlertDialog(Kotlin) (0) | 2021.12.23 |
안드로이드에서 네이버 지도 사용 (Kotlin) (0) | 2021.12.21 |