2011-11-20 2 views
3

에서 변수를 초기화?나는이 같은 코드가에 대한 루프

List<String> arStan = new ArrayList<String>(); 
arStan.add("wyniszczenie"); 
arStan.add("wychudzenie"); 
arStan.add("niedowaga"); 

for(String s : arStan){ 
    TextView s + _zakres_bmi = (TextView)t.findViewById(R.id. + s + _zakres_bmi); 
} 

나는 그것이 작동하지거야하지만 모든 솔루션이 거기 알아?

+1

리플렉션을 사용하지 않고. –

+0

@Matt에 동의합니다. 또는 ArrayView 또는 TextViews 목록을 사용할 수 있습니다. 또는 enum이 키이고 관련 TextView가 값 인 Map입니다. –

답변

3

이 시도 :

List<String> arStan = new ArrayList<String>(); 
arStan.add("wyniszczenie"); 
arStan.add("wychudzenie"); 
arStan.add("niedowaga"); 

for(String s : arStan) { 
    int myId = getResources().getIdentifier(s + "_zakres.bmi", "id", getPackageName()); 
    TextView myTextView = (TextView)t.findViewById(myId); 
    // Do something with myTextView 
} 

을 당신이 그것을 할당이야 직후, 다음 배열이나 해시 테이블에 myTextView을 넣어 그들에 작용 이후에 오히려에 대한 텍스트 뷰 참조를 저장해야합니다.

Hashtable textViews = new Hashtable<String, TextView>(); 
List<String> arStan = new ArrayList<String>(); 
arStan.add("wyniszczenie"); 
arStan.add("wychudzenie"); 
arStan.add("niedowaga"); 

for(String s : arStan) { 
    int myId = getResources().getIdentifier(s + "_zakres.bmi", "id", getPackageName()); 
    TextView myTextView = (TextView)t.findViewById(myId); 
    textViews.put(s + "_zakres.bmi", myTextView); 
} 

// When you need to get one of the TextViews: 
TextView tv = textViews.get("niedowaga_zakres.bmi"); 
// Do something with tv. 
+0

그것은 작동합니다! 감사! :) –

+0

좋아요! 도움이 되었다면 대답을 수락하십시오. – goto10