안드로이드/개발 공부

[Android/Kotlin] 문자열을 이용한 Resource 지정

감자 바보 2022. 3. 14. 12:59
반응형

 코틀린 코드에서 일반적으로 resource를 id를 통해 지정한다. 예를들어 텍스트뷰의 배경을 setBackgroundResource로 지정할 때 아래 코드와 같이 지정한다.

textView.setBackgroundResource(R.drawable.drawable_0)
textView.setBackgroundResource(R.drawable.drawable_1)
textView.setBackgroundResource(R.drawable.drawable_2)
textView.setBackgroundResource(R.drawable.drawable_3)
textView.setBackgroundResource(R.drawable.drawable_4)
textView.setBackgroundResource(R.drawable.drawable_5)

 

 위 코드 같은 경우는 "drawable_" + 숫자의 형태로 리소스 이름에 일정한 패턴이 존재한다. 이 때 문자열을 이용한다면 특정 상황에 원하는 drawable을 쉽게 지정할 수 있다. 문자열을 이용하여 resource를 얻어오기 위해선 Context 객체의 resources.getIdentifier("파일 이름", "리소스 타입", "패키지 이름") 함수를 사용한다. 

 예를 들어 a라는 정수 변수가 존재 할 때 a를 6으로 나눈 나머지에 따라 배경을 지정하고 싶다고 하자. 이 때 아래 코드와 같이 getIdentifier를 사용한다면 if문이나 when문 없이 간편하게 이를 구현할 수 있다.

val a = 10
val resource = applicationContext.resources.getIdentifier("drawable_${a % 6}",
                    "drawable",
                    applicationContext.packageName)
textView.setBackgroundResource(resource)