Android Application

Kotlin 어댑터 뷰(Adaptor View) : 스피너(Spinner)

작성자 임베디드코리아 작성일23-09-25 02:05 조회1,563회 댓글0건

첨부파일

------------------------------------------------------------------------------------
      activity_main.xml
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingVertical="10dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/title_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="52dp"
        android:layout_marginBottom="48dp"
        android:textSize="20dp"
        app:layout_constraintBottom_toTopOf="@id/content_tv"
        app:layout_constraintLeft_toLeftOf="parent"
        tools:text="메뉴" />

    <TextView
        android:id="@+id/name_tv"
        android:layout_width="207dp"
        android:layout_height="28dp"
        android:layout_marginRight="36dp"
        android:layout_marginBottom="12dp"
        android:textSize="20dp"
        app:layout_constraintBottom_toTopOf="@id/content_tv"
        app:layout_constraintRight_toRightOf="@id/content_tv"
        tools:text="이름" />

    <TextView
        android:id="@+id/content_tv"
        android:layout_width="470dp"
        android:layout_height="421dp"
        android:layout_marginLeft="8dp"
        android:textSize="15dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHeight_percent="0.3"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.601"
        tools:text="텍스트" />

</androidx.constraintlayout.widget.ConstraintLayout>

------------------------------------------------------------------------------------
***      values/array.xml
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="itemList">
        <item>선택안함</item>
        <item>선 물</item>
        <item>서 시</item>
        <item>그대가 값진 삶을 살고 싶다면</item>
    </string-array>
</resources>

------------------------------------------------------------------------------------
    MainActivity.kt
------------------------------------------------------------------------------------
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val title_tv = findViewById<TextView>(R.id.title_tv)
        val name_tv = findViewById<TextView>(R.id.name_tv)
        val content_tv = findViewById<TextView>(R.id.content_tv)
        // 스피너 선언
        val spinner = findViewById<Spinner>(R.id.spinner)

        // 어뎁터 설정 - resource -array.xml에 있는 아이템 목록을 추가한다.
        spinner.adapter = ArrayAdapter.createFromResource(this, R.array.itemList, android.R.layout.simple_spinner_item)

        //아이템 선택 리스너
        spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onNothingSelected(parent: AdapterView<*>?) {

            }
            override fun onItemSelected(
                parent: AdapterView<*>,
                view: View,
                position: Int,
                id: Long
            ) {
                when (position) {
                    //선택안함
                    0 -> {
                        title_tv.setText("선택안함")
                        name_tv.setText("")
                        content_tv.setText("내용 없음.")
                    }
                    //선물
                    1 -> {
                        title_tv.setText(spinner.selectedItem.toString())
                        name_tv.setText("니태주")
                        content_tv.setText("      세상에 와서\n" +
                                          "      내가 하는 말 가운데서\n" +
                                          "      가장 고운 말을\n" +
                                          "      너에게 들려주고 싶다\n" +
                                          "\n" +
                                          "      세상에 와서\n" +
                                          "      내가 가진 생각 가운데서\n" +
                                          "      가장 예쁜 생각을\n" +
                                          "      너에게 주고 싶다.")
                    }
                    //서시
                    2 -> {
                        title_tv.setText(spinner.selectedItem.toString())
                        name_tv.setText("윤동주")
                        content_tv.setText("      죽는 날까지 하늘을 우러러\n" +
                                          "      한 점 부끄럼이 없기를,\n" +
                                          "      잎새에 이는 바람에도 \n" +
                                          "      나는 괴로워했다.\n" +
                                          "      별을 노래하는 마음으로 \n" +
                                          "      모든 죽어가는 것을 사랑해야지\n" +
                                          "      그리고 나한테 주어진 길을 \n" +
                                          "      걸어가야겠다.")
                    }
                    //담쟁이
                    3 -> {
                        title_tv.setText(spinner.selectedItem.toString())
                        name_tv.setText("프리드리히 니체")
                        content_tv.setText("      그대가 값진 삶을 살고 싶다면\n" +
                                          "      날마다 아침에 눈을 뜨는 순간\n" +
                                          "      이렇게 생각하라.\n" +
                                          "    ‘오늘은 단 한 사람을 위해서라도 좋으니\n" +
                                          "      누군가 기뻐할 만한 일을 하고 싶다’고.\n")
                    }
                    //일치하는게 없는 경우
                    else -> {
                        title_tv.setText("메뉴")
                        name_tv.setText("")
                        content_tv.setText("")
                    }
                }
            }
        }
    }
}