이번 포스팅에서는 Spinner을 사용하는 방법을 포스팅하겠습니다.
sinner은 아래 사진과 같이 박스를 클릭할 경우 목록들을 보여주어 선택하는 것입니다.
먼저 layout에서 선언하는 방법은 아래와 같습니다. 아래 코드에서 entries = 에 있는 @array는 제가 res에 따로 추가한 string-array입니다. 아래와 같이 sppiner에 넣어주시면 해당 string-array 에 있는 글들을 담을수있습니다.
그리고 spinnerMode는 위 사진처럼 아래로 나오는 dropdown과 dialog창으로 띄워서 보여주는 두가지 방식 중 한가지를 설정할수있습니다.
<Spinner
android:id="@+id/categorySpinner"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:entries="@array/category"
android:spinnerMode="dropdown"
/>
아래는 entries에 넣은 @array의 부분입니다. 별도의 res 파일로 string.xml에 작성하였습니다.
<string-array name="category">
<item>전체</item>
<item>구성1</item>
<item>구성2</item>
<item>구성3</item>
<item>구성4</item>
</string-array>
</
이렇게 설정을 했다면 이제 선택한 값을 읽어와야겠죠?
아래 코드는 fragment에서 OnViewCreated 부분에서 선언한 부분입니다.
먼저 spinner의 id.onItemSelectedListener를 선언합니다.
binding.categorySpinner.onItemSelectedListener = object: OnItemSelectedListener{
val categoryList = resources.getStringArray(R.array.category)
// spinner 에서 값 선택시
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long){
category =categoryList[position]
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
}
이후 입력값으로 object : OnItemSelectedListener{} 하시면 선택했을떄와 선택한것이 없을때에 대한 두가지 함수를 override 하게 됩니다. 그럼 여기서 제가 아까 string-array를 변수로 저장해야 저희가 읽어올수있습니다.
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long){
category =categoryList[position]
}
여기서 position이 여러분이 선택한 부분의 위치값입니다. 그래서 string-array 를 저장한 변수 이름[position]을 하시면 선택된 spiiner의 값을 읽어오실수있습니다.
'안드로이드 > androidstudio' 카테고리의 다른 글
[Android] retrofit 통해 data 가져오기 (0) | 2022.12.06 |
---|---|
[Android] TimePicker, DatePicker (0) | 2022.12.05 |
[Android] Kakao map 사용하기 (1) | 2022.12.03 |
[intetn]activity, intent 활용 값 전달방법 (0) | 2022.12.02 |
[Android] openAPI retrofit2 방법(특정 api 리스트화) (0) | 2022.11.14 |