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 |