프로그래밍/Kotlin

[코틀린/안드로이드] Spinner 사용하기 (simple_list_item_1, Adapter)

pupu91 2022. 10. 24. 18:09
반응형
activity_main.xml

 

viewBinding 설정

 

MainActitity.kt
class MainActivity : AppCompatActivity() {

    val binding by lazy { ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
 	
    /* 스피너의 아이템에 보여 줄 텍스트를 배열 형태로 만든다.*/
    var data = listOf("선택하세요", "1월", "2월", "3월", "4월","5월", "6월")
 	
    /* 생성한 배열 목록을 스피너 목록으로 추가하기 위해서는 Adapter를 이용해야 한다.
    simple_list_item_1은 기본적으로 제공하고 있는 스피너용 레이아웃 이다.
    어댑터에서 사용하면 입력 된 데이터에서 문자열 1개를 꺼내서 레이아웃에 그려준다.
    어댑터는 레이아웃과 데이터를 연결해주는 역할을 하며, 레이아웃별로 다른 형태의 목록을 출력할 수 있다.*/
 	var adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data)
    
    /* 생성한 어댑터를 스피너 뷰에 연결한다.*/
    binding.spinner.adapter = adapter
    
    /* 스피너의 아이템이 선택 될 때 동작할 이벤트 리스너 연결 */
    binding.spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
           
      override fun onItemSelected(adapterView: AdapterView<*>?,
                                   view: View?, position: Int, id: Long) {
          
          /* position으로 selected된 아이템의 인덱스 값을 확인할 수 있다.*/
           binding.result.text = data[position]
          //position : 선택한 값이 몇번째인지, 데이터에 있는 포지션을 기준으로 가져오기. 
          //get말고 인덱스 연산자로 가져오기
  }    

 }
}

 

실행 결과

반응형