안드로이드 프로그래밍에서 가장 많이 사용되는 함수는 findViewById일 것이다.

근데 프로그래밍을 하던 중 불편한 점을 발견했는데, 바로 findViewByString 이라는 함수가 없다는 것이다.

이게 왜 필요할까?

아래의 예를 보자

[code xml]
<TextView android:id="@+id/text0" ...
<TextView android:id="@+id/text1" ...
...
<TextView android:id="@+id/text9" ...
[/code]
위와 같은 xml파일에서 TextView를 얻어내기 위해,
[code java]
TextView ttt[]=new TextView[10];

ttt[0]=(TextView)findViewById(R.id.text0);
ttt[1]=(TextView)findViewById(R.id.text1);
ttt[2]=(TextView)findViewById(R.id.text2);
...
ttt[9]=(TextView)findViewById(R.id.text9);
[/code]와 같이 프로그래밍 한다면 TextView가 100개가 되면 저걸 다 적어야 할까?
그럼 배열로 선언해놓은 의미가 없다.

바라건데,
[code java]
TextView ttt[]=new TextView[10];

for(i=0;i++;i<10) ttt[i]=(TextView)findViewByString( "R.id.text"+i );
[/code]
이렇게 간단하게 쓸 수 있으면 얼마나 좋을까.


그런 함수가 있다.
바로, getIdentifier라는 함수이다.

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

이 함수는 Resourse 클래스의 메쏘드이므로 아래와 같이 활용하면 된다.

  • for (int i = 0; i < 10; i++) {  
  •     int resID = getResources().getIdentifier("text"+i, "id""com.exam");  
  •     ttt[i]=(TextView)findViewById(resID);  
  • }  
  • 저작자 표시 비영리 변경 금지
    신고
    Posted by DoDo4989

    댓글을 달아 주세요