1) activity_main.xml에서 스피너를 등록해준다.
<Spinner
android:id="@+id/spinner"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintWidth_percent="0.7"
app:layout_constraintDimensionRatio="7:1"
android:background="@drawable/edittext_round_box"
app:layout_constraintVertical_bias="0.6"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
2) MainActivity.kt파일에 data변수를 만들고 여러 개의 데이터를 입력한다.
val data: List<String> = listOf("1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월")
3) 이제 spinner와 data를 연결해줄 어댑터를 만들어야 한다.
ArrayAdapter클래스로 만들고 어댑터에서 사용할 타입을 <제네릭>으로 지정한다.
val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data)
ArrayAdapter의 파라미터는 총 3개이다.
(스피너를 화면에 그리기 위한 context, 스피너에 보여줄 목록 하나하나가 그려질 레이아웃, 어댑터에서 사용할 데이터)
→ context는 this, 레이아웃은 기본으로 제공하는 simple_list_item1을 사용. 마지막 값으로 미리 만들어둔 data 변수를 입력
4) 이후 코드로 생성한 어댑터를 스피너의 adapter속성에 담아주면 간단하게 완성!
spinner.adapter = adapter
- 스피너를 선택하면 선택한 값을 TextView에 띄우기 -
스피너의 동작을 인식하기 위해서 onItemSelectedListener를 사용한다.
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
override fun onNothingSelected(p0: AdapterView<*>?) {
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
}
}
object: AdapterView.OnItemSelectedListener{}까지 입력하고 onNothingSelected, onItemSelected를 오버라이드 해준다.
OnItemSelecteListener를 사용하는데 이때 p2파라미터는 사용자가 스피너를 선택하면 몇 번째 아이템인지 알려주는 파라미터이다.
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
textview_spinner_item.text = data.get(p2)
}
리스너에서 넘겨주는 position값으로 data의 해당 위치에 있는 문자 값을 textview에 입력한다.
<전체코드>
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
spinnerTime()
}
fun spinnerTime(){
val data: List<String> = listOf("1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월")
val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data)
spinner.adapter = adapter
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
override fun onNothingSelected(p0: AdapterView<*>?) {
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
textview_spinner_item.text = data.get(p2)
}
}
}
}'Android' 카테고리의 다른 글
| 🔍 Data Binding with Retrofit (Kakao 웹문서 검색 API) (0) | 2021.02.06 |
|---|---|
| Android Studio WebView (0) | 2020.09.21 |
| Android CheckBox (회원가입 화면) (0) | 2020.09.21 |
| ViewPager를 이용한 Fragment전환, TabLayout(2) - Indicator (0) | 2020.09.21 |
| Activity Task 관리하기 (0) | 2020.09.10 |