IT_Programming/Android_Java

[펌] 간단히 다중 위젯의 인스턴스 확보하기

JJun ™ 2012. 10. 5. 22:19



출처: http://oic.tstore.co.kr/front/community/mentoring/viewMentoring.action?seq=128




[내용]


같은 위젯이 여러개 있고 이 위젯의 인스턴스값을 확보하기 위해서
 반복적으로 findViewById를 하는 것을 좀더 간편히 하는 방법 안내




[전제조건]

Button이 10개 배치 되어 있는 경우 (예를 들면 다이얼 패드 등과 같이)





[방법]

1. xml에서 Button의 이름 끝에 번호값 형태로 부여 한다.
   1번 버튼:   android:id="@+id/button_0"
   2번 버튼:   android:id="@+id/button_1"
   0 ~ 9를 부여해서 10개의 버튼을 만든다.. 

2. 코드상에서 해당 버튼의 인스턴스는 다음과 같이 구한다.


   Button[] mButton = new Button[10];
    int nResId = 0;
    Resources oRes = getResources();
    String strPkgName = getPackageName();
    for (int i=0; i<10; i++) {
         nResId = oRes.getIdentifier("button_" + i, "id", strPkgName);
         mButton[i] = (Button)findViewById(nResId);
    }





[기타] 

getIdentifier() 메소드는 R 클래스에 있는 것을 가져 올 수 있기 때문에
ID 뿐만 아니라, drawable, string 도 유사하게 처리 할 수 있습니다.
응용이 가능합니다.