GridView 만들기

노지수·2022년 2월 7일
0

item_spinner.xml

1. xml파일 만들기


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

2. item_spinner 코드

<?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"/>

1번 방법 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!"
            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.044"/>
    <GridView
            android:id="@+id/grid"
            android:columnWidth="100dp"
            android:layout_width="471dp"
            android:layout_height="602dp"
            tools:ignore="MissingConstraints"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintHorizontal_bias="0.507"
            app:layout_constraintVertical_bias="0.765"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity

class MainActivity : AppCompatActivity() {

    val b by lazy { ActivityMainBinding.inflate(layoutInflater) }

    var items = arrayOf(  // 스크롤기능 확인을 위해 중복작성
        "서울", "부산", "대구", "광주", "인천", "목포", "여수", "태백",
        "서울", "부산", "대구", "광주", "인천", "목포", "여수", "태백",
        "서울", "부산", "대구", "광주", "인천", "목포", "여수", "태백",
        "서울", "부산", "대구", "광주", "인천", "목포", "여수", "태백",
        "서울", "부산", "대구", "광주", "인천", "목포", "여수", "태백",
        "서울", "부산", "대구", "광주", "인천", "목포", "여수", "태백"
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(b.root)

        // grid 목록생성
        // item_spinner레이아웃에 items들을 각각 넣은 리스트 grid에 세팅
        b.grid.setAdapter(
            ArrayAdapter(this, R.layout.item_spinner, items)
        )

        // 항목 클릭시 이벤트
        b.grid.setOnItemClickListener{ parent, View, position, id ->
            b.textView.text = items[position] 
            // 클릭시 textView의 text가 해당항목의 값으로 바뀜
        }
    }
}

1번 방법 결과

첫 실행화면

서울 터치 시 textView변경 및 스크롤기능도 정상작동

2번 방법 activity_main(전체보기)

// activity_main - GridView
android:numColumns="auto_fit"

GridView에 해당 코드 추가작성

2번 방법 결과

첫 실행화면

부산 터치 시 textView변경

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

0개의 댓글