나의 블로그
[안드로이드 스튜디오] Spinner 본문
1. XML에서 Spinner 추가하기
레이아웃 파일(XML)에 Spinner를 추가
<!-- activity_main.xml -->
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
/>
2. 드롭다운 데이터 정의하기
드롭다운에 표시할 데이터를 strings.xml 파일에 추가하거나 코드에서 바로 정의
a. strings.xml 파일에서 정의하기
<resources>
<string-array name="dropdown_items">
<item>Option 1</item>
<item>Option 2</item>
<item>Option 3</item>
</string-array>
</resources>
b. 코드에서 배열로 정의하기
val items = arrayOf("Option 1", "Option 2", "Option 3")
3. 코드에서 Spinner와 데이터 연결하기
액티비티에서 Spinner와 데이터를 연결
Kotlin 코드
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.Toast
import android.widget.AdapterView
import android.widget.Spinner
import androidx.appcompat.app.AppCompatActivity
import com.example.yourapp.databinding.ActivityMainBinding // 패키지에 맞게 수정!
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding // 뷰바인딩 객체
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ViewBinding 초기화
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// 1. XML에서 Spinner 찾기
val spinner: Spinner = findViewById(R.id.spinner)
// 2. 드롭다운 데이터 가져오기
val items = resources.getStringArray(R.array.dropdown_items) // strings.xml 사용
// val items = arrayOf("Option 1", "Option 2", "Option 3") // 코드에서 직접 정의
// 3. ArrayAdapter 생성
val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, items)
// 4. Spinner에 Adapter 연결
binding.spinner.adapter = adapter
// 5. Spinner 이벤트 처리
binding.spinner.setOnItemSelectedListener { parent, position ->
val selectedItem = parent.getItemAtPosition(position).toString()
Toast.makeText(this, "Selected: $selectedItem", Toast.LENGTH_SHORT).show()
}
}
// Spinner 확장 함수
fun Spinner.setOnItemSelectedListener(listener: (parent: AdapterView<*>, position: Int) -> Unit) {
this.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
listener(parent, position)
}
override fun onNothingSelected(parent: AdapterView<*>) {}
}
}
}
'Study' 카테고리의 다른 글
| [안드로이드 스튜디오] github 프로젝트 불러오기 (0) | 2025.01.05 |
|---|---|
| 리눅스 마스터 2급 합격 후기 (0) | 2024.10.06 |