listView 만들기

노지수·2022년 2월 7일
0

item_spinner.xml

1. xml파일 만들기


app - src - main - res - layout Layout리소스파일 만들기

2. item_spinner 코드

// 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/darker_gray"
        android:textSize="15sp"
        android:paddingLeft="30dp"/>

activity_main

activity_main 코드

<?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="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            android:textSize="20sp"
            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.073" 
            app:layout_constraintHorizontal_bias="0.501"/>
    <ListView
            android:id="@+id/listView"
            android:layout_width="600dp"
            android:layout_height="541dp"
            tools:ignore="MissingConstraints" 
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintBottom_toBottomOf="parent" 
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="1.0"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity

MainActivity코드

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
        val textView = findViewById<TextView>(R.id.textView)
        textView.setTextSize(Dimension.SP, 28.0f)

        // Adapter
        // item_spinner레이아웃에 items들을 각각 넣어서 adapter라는 변수에 저장
        val adapter:ArrayAdapter<*> = ArrayAdapter<Any?>(this, R.layout.item_spinner, items)
		
        // listView가 가진 adapter에 위에서 만든 adapter를 저장
        listView.adapter = adapter

		// onItemClick함수를 this
        listView.onItemClickListener = this(MainActivity)에서 실행
    }

	// 각 항목(items)들을 터치 시 textView의 문구가 해당 항목값으로 바뀜
    override fun onItemClick(p0: AdapterView<*>?, p1: View?, pos: Int, p3: Long) {
        val textView = findViewById<TextView>(R.id.textView)
        textView.text = items[pos]
    }
}

결과

제주 터치시 textView의 text변경
스크롤기능도 정상 작동

profile
프로그래밍, 개념 및 이론 기록

0개의 댓글