2012-11-24 6 views
5

내 안드로이드 애플 리케이션을 위해 View ID의 배열을 만들어야합니다.어떻게 뷰 ID를 반복합니까?

배열에는 81 개의 값이 저장되므로 하나씩 배열을 추가하려면 상당히 길어집니다.

cells[0] = R.id.Square00; 
cells[1] = R.id.Square01; 
cells[2] = R.id.Square02; 
cells[3] = R.id.Square03; 
cells[4] = R.id.Square04; 
cells[5] = R.id.Square05; 
//All the way to 80. 

이 일의 짧은/더 효율적인 방법이 있나요 : 이 지금의 모습인가?

+0

그래서 여러 가지 방법을 사용하는 경우의 EED는 .. 당신은'getId()를'동적 코드 또는 ** 자원에서'getIndentifier()'방법이있다) 'setId를 (사용'할 수 있습니다 ** 수업. – user370305

답변

5

다행히,이 getIndentifier() 사용된다

Resources r = getResources(); 
String name = getPackageName(); 
int[] cells = new int[81]; 
for(int i = 0; i < 81; i++) { 
    if(i < 10) 
     cells[i] = r.getIdentifier("Squares0" + i, "id", name); 
    else 
     cells[i] = r.getIdentifier("Squares" + i, "id", name); 
} 
+1

이전에 루프 한 번 getPackageName()을 호출했습니다. –

+0

확실히 쉽습니다. – Sam

+0

고마워요, 그것은 매력처럼 작동했습니다! –

1

샘의 대답은 더하지만 난 샘 응답의 대안

int [] ids = new int [] {R.id.btn1, R.id.btn2, ...}; 
Button [] arrayButton = new Button[ids.length]; 

for(int i=0 ; i < arrayButton.length ; i++) 
{ 
    arrayButton[i] = (Button) findViewById(ids[i]); 
} 

수정 된 양식을 공유해야한다고 생각

아니요 n 다른 정수 문자열 포맷하기

Resources r = getResources(); 
String name = getPackageName(); 

int[] resIDs = new int[81]; 

for(int i = 0; i < 81; i++) 
{ 
     resIDs[i] = r.getIdentifier("Squares0" + String.format("%03d", i), "id", name); 
} 
관련 문제