타닥타닥 개발자의 일상

Kotlin / listview 이용해서 android화면에 스크롤 사용하는 긴 선택항목 만들기 본문

코딩 기록/Kotlin

Kotlin / listview 이용해서 android화면에 스크롤 사용하는 긴 선택항목 만들기

NomadHaven 2022. 2. 7. 02:15
파일 및 폴더 구성

layout폴더에 item_spinner.xml 파일 생성

 

 

item_spinner.xml
<?xml version="1.0" encoding="utf-8"?>


    <TextView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/listItem"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:paddingTop="10dp"
            android:paddingStart="30dp"
            android:textColor="@android:color/holo_orange_dark"
            android:textSize="15sp"
            android:paddingLeft="30dp"/>

 

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

    <TextView
            android:id="@+id/textView"
            android:layout_width="118dp"
            android:layout_height="28dp"
            android:text="Hello World!"
            android:textSize="10sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" app:layout_constraintHorizontal_bias="0.547"/>
    <ListView
            android:id="@+id/listView"
            android:layout_width="600dp"
            android:layout_height="923dp"
            tools:layout_editor_absoluteY="36dp"
            tools:layout_editor_absoluteX="1dp"
            tools:ignore="MissingConstraints"/>

</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
package com.example.sample17

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.TextView
import androidx.annotation.Dimension

class MainActivity : AppCompatActivity(),AdapterView.OnItemClickListener {

    var items = arrayOf(
        "서울", "부산", "대구", "광주", "대전", "울산", "전주", "목포",
        "제주", "강원", "태백", "인천", "서울", "부산", "대구", "광주",
        "대전", "울산", "전주", "목포", "제주", "강원", "태백", "인천",
        "대전", "울산", "전주", "목포", "제주", "강원", "태백", "인천"

    )


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val listView = findViewById<View>(R.id.listView) as ListView //제네릭 안에 ListView대신 그냥 View로만 적어도 된다. as ListView로 형변환
        val textView = findViewById<TextView>(R.id.textView)
        textView.setTextSize(Dimension.SP,28.0f)

        //Adapter <*> 은 어떤형이든 받아들이겠다는 말
        val adapter:ArrayAdapter<*> = ArrayAdapter<Any?>(this, R.layout.item_spinner, items)

        listView.adapter = adapter

        listView.onItemClickListener = this

    }

    override fun onItemClick(p0: AdapterView<*>?, p1: View?, pos: Int, p3: Long) {
        val textView = findViewById<TextView>(R.id.textView)
        textView.text = items[pos]
    }


}

 

 

결과화면

오른쪽에 스크롤
텍스트뷰에 선택한 항목

 

 

 

Comments