안드로이드 프로그래밍[Kotiln Code]/안드로이드 초기 강좌

[안드로이드] 스피너 (콤보박스)

훈츠 2020. 4. 9. 11:45
반응형

안녕하세요. 훈츠 입니다. 안드로이드 스피너(콤보박스) 조작하는 기본적인 방법에 대해 포스팅 합니다. 


스피너 (spinner) : SpinnerAdpter = ArrayAdater : AdapterView

스피너는 배열이나 리스트 또는 데이터베이스 등에서 가져온 데이터 목록을 화면에 보여주고 사용자의 선택을 받는 UI 입니다. 목록을 표시 하기 위해서는 데이터를 직접 Spinner 에 할당 하지 않고 데이터를 관리하는 SpinnerAdpter 에 Adapter 를 할당 해야 합니다. Spinner Adpter 는 데이터의 전체 목록 중에서, 화면에 표시할 목록의 View를 Spinner에 제공해주는 역활을 합니다. 전체 데이터를 모두 Spinner에 직접 할당할 경우 메모리 사용량과 속도에 문제가 생기기 때문 입니다. 하지만 Spinner Adpater에는 실제 데이터를 제공하는 부분이 직접 구현 되어있지 않기 때문에 ArrayAdater 라는것을 사용합니다. 

순서

  • XML 구성 : Spinner 와 결과를 표시할 textView 
  • 데이터 목록을 가지는 dataArray 생성 
  • adapter : ArrayAdater 생성후, adpater = ArrayAdapter(context, support_simple_spinner_dropdown_item, dataArray) 할당 
  • spinner.adpater = adpater 할당 
  • spinner.onItemSeletedListener 에 object : ArrayAdapter 의 최상위 클래스인 AdapterView 로 익명 함수 만들어서 선택 되었을때 기능 연결 

코드 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MainActivity : AppCompatActivity() {
    val dataArray = arrayOf("짜장면""짬뽕""볶음밥")
    lateinit var adapter: ArrayAdapter<String>
 
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        adapter = ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item, dataArray)
        spinner.adapter = adapter
 
        spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onNothingSelected(parent: AdapterView<*>?) {
                textView.setText("메뉴를 선택하세요.")
            }
 
            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                textView.setText("${dataArray[position]},을 선택 하셨습니다.")
            }
        }
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

코드실행화면

https://youtu.be/D-hWqM3sgGk