2013-07-17 3 views
0

내 XML에 약 136 개의 체크 박스가 있는데, 각각의 자바 파일을 개별적으로 초기화하는 데 어려움을 겪고 싶지 않다. 이것을 수행하는 참신한 아이디어가 떠올랐다. for 루프를 사용하여, 그러나 안드로이드는 내가 그것을하게하지 않을 것이다. onCreate 메서드에서 코드를 시도했습니다. 전 세계적으로 선언해야합니까? 나는 이것이 바보 같은 질문 일지 모른다는 것을 모른다!for 루프 내에서 뷰 초기화하기

 CheckBox[] C = new CheckBox[136]; 
      for(int i=1;i<=136;i++){ 
       C[i] = (CheckBox) findViewById(R.id.checkBox[i]); 
      } 

이 유효 여부와 뒤에 이유 만약 내가 알고 싶은 : 다음

내 코드입니다.

오류 : 유형 불일치 : CheckBox의 체크 박스에서 변환 할 수는 []

이 체크 박스가 해결되지 않을 아니면 제가 XML 레이아웃에 익숙하지 않다 필드

+0

지금 당장 가져 오는 오류는 'CheckBoxes'배열을 포함 할 것으로 예상되는 참조에 'CheckBox' 변수를 지정하려고하기 때문입니다. 즉 CheckBox C [] 대신 CheckBox C를 사용합니다. –

+0

배열 대신 ArrayList를 사용 해봤습니까? –

+0

@ mmnumbp 죄송합니다. 내가 어떻게 그럴 수 있니? 이 상황에서 당신이 제안하는 방식이 굴하지 않을 것입니다. – Skynet

답변

1

좋아, 당신은 형식 불일치를 얻고있는 이유를 모르겠다 작업 버전

CheckBox[] C = new CheckBox[136]; 
// see thepoosh comment, you need to change to this: 
for (int i = 0; i < 136; i++) { 
    C[i] = (CheckBox) findViewById(checkBox[i]); 
} 

입니다. 그러나 R.java에는 배열이 없습니다.

+0

그냥 사소한 편집 : ** int [] checkBox = new int [136]; \t \t (int i = 0; i <136; i ++) { \t \t \t checkBox [i] = i; \t \t ** – Skynet

2

아니라, 당신은 아마 돈 수 ' 거기에 136 개의 확인란이 필요합니다. 대신 ListView을 사용해야합니다. 이 예 (here)를 확인하십시오.

오류는 할당이 구문 적으로 유효하지 않았기 때문에 발생했습니다. 사전에 배열을 선언해야했습니다. 실제로 값을 할당 할 때 클래스를 다시 지정할 필요가 없습니다. 예를 들어 :

CheckBox[] checkBoxes = new CheckBox[136]; 
... 
checkBoxes[i] = //Whatever you want to assign this. 
+0

나는 listview를 사용했을 것이다. 그러나 그것은 나의 시나리오에서는 가능하지 않다. 그러나 나는 당신의 논리를 얻었고 같은 것을 구현했다. 그러나 나는 여전히 오류를 얻는다. 내 질문에 내가 분류 한 것과 동일한 것. – Skynet

+0

어느 오류가 발생합니까? 위에서 제시 한 것을 구현했다고 가정하면, 더 이상'TypeMismatch' 에러가 발생하지 않아야합니다. – ggmathur

+0

checkBox를 확인할 수 없거나 *** (R.id.checkBox [i]) *** – Skynet

관련 문제