이전 시간에 이미지 클릭 이벤트를 해보았는데,
사진 하나 하나를 각각 호출하여 이벤트를 발생하다보면 사진이 쌓일 때 마다 이벤트를 만들어 각각 호출해야 하는 번거로움이 생깁니다. 이를 위해
1. 문제점
2. 해결방안
이미지를 클릭했을 때 상세 페이지로 전환되는 이벤트는 완료했지만, 이미지 각각을 변수에 저장하여 같은 이벤트를 호출하다보니 이미지 하나가 들어갈 때마다 또 변수를 호출해주고 같은 코드를 넣다보니 코드의 가독성이 떨어질 뿐더러 길어져서 매우 번거로웠다.
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)
}
}