2010-05-31 3 views
8

내가 16 textViews을했고이 작업이 완료 같은 것을 설정해야합니다R.java 클래스의 id 속성을 반복하는 방법은 무엇입니까?

for (int i=1; i<6; i++) 
{ 
    int $RidInt = R.id.s; 
    tv[i] = (TextView)findViewById($RidInt); 
    tv[i].setTypeface(face); 
    tv[i].setClickable(true); 
    tv[i].setOnClickListener(clickListener); 
} 

내 R.java 파일은 다음과 같은

public final class R { 
    public static final class attr { 
    } 
    public static final class drawable { 
     public static final int icon=0x7f020000; 
    } 
    public static final class id { 
     public static final int s1=0x7f050000; 
     public static final int s10=0x7f050009; 
     public static final int s11=0x7f05000a; 
     public static final int s12=0x7f05000b; 
     public static final int s13=0x7f05000c; 
     public static final int s14=0x7f05000d; 
     public static final int s15=0x7f05000e; 
     public static final int s16=0x7f05000f; 
     public static final int s2=0x7f050001; 
     public static final int s3=0x7f050002; 
     public static final int s4=0x7f050003; 
     public static final int s5=0x7f050004; 
     public static final int s6=0x7f050005; 
     public static final int s7=0x7f050006; 
     public static final int s8=0x7f050007; 
     public static final int s9=0x7f050008; 
    } 
    public static final class layout { 
     public static final int main=0x7f030000; 
     public static final int toast=0x7f030001; 
    } 
    public static final class string { 
     public static final int app_name=0x7f040000; 
     public static final int s2=0x7f040001; 
    } 
} 

답변

13

뭔가?

import java.lang.reflect.Field; 
/* ... */ 

for (int i = 1; i < 16; i++) { 
    int id = R.id.class.getField("s" + i).getInt(0); 
    tv[i] = (TextView)findViewById(id); 
    tv[i].setTypeface(face); 
    tv[i].setClickable(true); 
    tv[i].setOnClickListener(clickListener); 
} 
+0

완벽! 그게 효과가 있었어. 감사. –

+0

정말 좋은 직장입니다 !! – MKJParekh

+0

어떤 이유로 try/catch 블록을 추가해야하지만 아름답게 작동합니다! 어쨌든 try/catch를 피하기 위해? – Jona

2

시도해보십시오.

+0

나는 모든 childs가 textviews가 아니라면 이것이 CastingExpcetions를 많이 던질 것이라고 생각한다. – RoflcoptrException

+0

mgpyone은 "나는 16 개의 textViews를 가졌으며 이와 같이 설정해야한다 :". 모든 텍스트 뷰를 하나의 선형 레이아웃에 배치 할 수 있습니다. 그리고이 또한 요구 사항을 달성하는 방법이라는 힌트를 제공하고 있습니다. – Vivart

2

필자는 try/catch 래퍼에서 광산을 포장해야했는데 그 이유는 확실하지 않지만 매우 신품입니다.

for (int counter = 1; player < 5; counter++) { 
     try {Field field = example.main.R.id.class.getField("s" + counter); 
      try {screenid = field.getInt(null);} 
      catch (IllegalAccessException e){//exceptioncodehere} 
     catch (NoSuchFieldException e) {//exception2codehere} 
     TextView SetMe = (TextView)findViewById(screenid); 
     SetMe.setText("Text" + player);}} 
관련 문제