[Kotlin] 사진첩 앱 만들기(3)

이상목·2024년 4월 25일
0

Kotlin

목록 보기
17/20

이전 시간에 이미지 클릭 이벤트를 해보았는데,
사진 하나 하나를 각각 호출하여 이벤트를 발생하다보면 사진이 쌓일 때 마다 이벤트를 만들어 각각 호출해야 하는 번거로움이 생깁니다. 이를 위해

목차

1. 문제점

2. 해결방안



1. 문제점

이미지를 클릭했을 때 상세 페이지로 전환되는 이벤트는 완료했지만, 이미지 각각을 변수에 저장하여 같은 이벤트를 호출하다보니 이미지 하나가 들어갈 때마다 또 변수를 호출해주고 같은 코드를 넣다보니 코드의 가독성이 떨어질 뿐더러 길어져서 매우 번거로웠다.

  • 위와 같이 같은 동작을 하는건데 반복을 통해 더 간결하게 할 순 없을까 ?



2. 해결방안

  • 모든 언어에는 배열이 있다. 배열과 for문을 이용해서 해결해보겠다.

2-1) 이미지 데이터를 배열에 담아준다.

// 이미지 ID 배열
val imageIds = arrayOf(R.id.image_2, R.id.image_3, R.id.image_4, R.id.image_5, R.id.image_6, R.id.image_7)

2-2) 클릭할 때 실행될 액티비티 클래스를 배열에 담아준다.

// 클릭할 때 실행할 액티비티 클래스 배열
val activityClasses = arrayOf(
    Bts2Activity::class.java,
    Bts3Activity::class.java,
    Bts4Activity::class.java,
    Bts5Activity::class.java,
    Bts6Activity::class.java,
    Bts7Activity::class.java
)

2-3) 이미지 ID 배열, 액티비티 배열 둘 다 동일한 인덱스를 가지고 있으므로, for문을 돌려 간단하게 실행할 수 있다.

// 이미지에 대한 클릭 이벤트 리스너 설정
for (i in imageIds.indices) {
    findViewById<ImageView>(imageIds[i]).setOnClickListener {
        val intent = Intent(this, activityClasses[i])
        startActivity(intent)
    }
}
  • 이렇게 배열과 for문을 이용하면 80줄이 넘어가는 코드를 20줄로 줄일 수 있었다 !!
profile
기록은 기억을 지배한다.

0개의 댓글