마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

r.java의 리소스id 주소값 변경혹은 정렬 방법?

0 추천
r.java 파일에 리소스 주소값 임의로 변경 하는 방법 있는가요?
제가 할려고 하는것은 XML에서 리소스 ID값을 예를 들어서
btn_no1, btn_no2, btn_no3 ......
이렇게 정의를 해 놓았다고 하면요
r.java에서 그 id 값과 실제 주소값이 순서데로 되어져 있을때는
프로그래밍적인 루프를 돌려서 코딩을 해서 할려고 하거든요
 
for(i<0; i<10;i++){
Button btn_no1 = (Button)findViewById(R.id.btn_no1+i);
btn_no1.setTag(iTag);
btn_no1.setOnClickListener(this);
}
 
위의 같이 처리를 하려면
 
r.java파일에 리소스와 주소값이 등록된것이
btn_no1 =0x7f080001
btn_no2 =0x7f080002
btn_no3 =0x7f080003
.........
 
위의값이 주소값 자체도 순서대로 일때 가능한데 위와 같이 순서대로 자동으로
될때도 있고 안될때가 더 많은거 같더라고요
 
r.java 파일에 
btn_no3 = 0x7f080003
btn_no2 =x7f08007a
btn_no1 =0x7f080030
 
위와 같이 뒤죽 박죽일때 위와 같이 순서대로 r.java파일을 변경할 방법이 없을까요?
for루프 돌리면 소스코드가 줄어들고 편한데 현재 리소스 주소값이 뒤죽 박죽 되어져있어서 하나하나 다 리스너를 등록해야되는데 노가다네요 방법이 없을까요?
모과이 (220 포인트) 님이 2013년 7월 4일 질문

3개의 답변

+2 추천
b22n (22,940 포인트) 님이 2013년 7월 4일 답변
0 추천
보통 그럴땐 파일이름을 정렬해서 리소스아이디를 가져오는경우가 많습니다.

 

for(int i=0; i<btn_no1.length; i++){

String fileName = "btn_no"+i;

button[i] = (Button)findViewById(getResources().getIdentifier(fileName, "id", getPackageName()));

button[i].setTag(i);

button[i].setOnClickListener(this);

}
기초개발자 (24,060 포인트) 님이 2013년 7월 4일 답변
–2 추천
리소스 아이디를 예측할 수 없다면

정해진 리소스 아이디를 받아서 배열에 담아둔 후 사용하면 어떨까요 ?

int res[] = {R.id.button01, R.id.Button02, R.id.Button03}

와 같이 정의 후 res 갯수만큼 for 문으로 돌려가며 리스너 등록하면 되겠죠?
블랙넥원 (9,600 포인트) 님이 2013년 7월 4일 답변
...