loop에서 findViewById 사용하기 (getIdentifier)

2019. 2. 11. 16:21Programming/Android

반응형

getIdentifier(), Android Developers

public int getIdentifier (String name, String defType, String defPackage)

주어진 리소스의 이름을 통해, 리소스의 식별자(id)를 반환한다. package:type/entry 형식으로 완전히 정규화된 이름(fully qualified resource name)을 사용할 수 있다. 완전히 정규화된 이름을 사용할 때는 defType과 defPackage를 생략할 수 있다.


여러개의 리소스가 규칙적인 이름을 가지고 있을 때 사용한다.

Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
Button button3 = (Button) findViewById(R.id.button3);
Button button4 = (Button) findViewById(R.id.button4);

위의 코드를 getIdentifier를 사용하면, 다음과 같이 수정할 수 있다.

for(int idx_loop=0; idx_loop<4; idx_loop++) {
    int buttonId = getResources().getIdentifier("button"+idx_loop, "id", getPackage());
    Button buttonN = (Button)findViewById(buttonId);
}

getIdentifier()를 사용하는 경우, 규칙적으로 이름지어져있는 리소스에 접근하는 코드를 간결하게 정리할 수 있다.


참조: Android - findViewById() in a loop, PARESH MAYANI
참조2: Android: Using findViewById() with a string / in a loop, stackoverflow

반응형