본문 바로가기
프로그래밍/Kotlin

[Kotlin] 모델로 가져온 Spinner값 표시

by Youngs_ 2022. 3. 21.

MVC모델에서 서버에서 Spinner값을 가져올때 key, description 값을 가져오면 Model에 아래와 같은 형식으로 가져온다.

toString을 override 해서 spinner에 표시되는 값을 지정해준다. override해주지 않으면 해당 스피너의 '클래스@ab4732d'와같이 이상한값이 나오므로 해당값을 추가해준다.

class spinnerModel{
    var key : String = ""
    var description : String = ""

    constructor(key:String,description:String) {
        key = key
        description = description
    }

    override fun toString(): String { // 해당 코드가 있어야 spinner에 정상적으로 description이 나온다
        return description!!
    }
}

 

서버에서 spinner 목록을 가져오면 아래와같은 코드를 이용해 spinner에 추가하면된다.
서버와 연결하는 코드는 이전에 작성한 글을 참고바란다.

서버에서 spinner 목록 가져오기
{
	val list : ArrayList<String>
    
	list!!.add(0, spinnerModel("", "----- 선택하세요. -----"))
    
    // 혹은 val list = listOf<String>("리스트1") 해당 코드를 사용한다.

    val spinnerAdapter = ArrayAdapter(requireContext(), R.layout.custom_spinner_item_center_black, list)
    spinnerAdapter.setDropDownViewResource(R.layout.custom_spinner_dropdown_item)
    binding.spinnerList.adapter = spinnerAdapter
}

 

layout@custom_spinner_item_center_black.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          style="?android:attr/spinnerItemStyle"
          android:singleLine="true"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:textSize="@dimen/font_default"
          android:textColor="@android:color/black"
          android:ellipsize="marquee"
          android:gravity="center"
          android:textAlignment="inherit"/>

layout@custom_spinner_dropdown_item.xml

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
                 android:id="@android:id/text1"
                 style="?android:attr/spinnerDropDownItemStyle"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:padding="12dp"
                 android:checkMark="?android:attr/listChoiceIndicatorSingle"
                 android:textSize="@dimen/font_default"
                 />

댓글