2012-04-24 1 views
0

저는 Android 3.1 이상의 응용 프로그램 개발자입니다.고유하게 확인란을 식별하도록 설정하는 ID입니다.

저는 개발자가 동적 양식 생성기이므로 프로그래밍 방식으로 많은 확인란을 추가해야합니다.

양식은 첫 번째 열에 질문이있는 표가되며 나머지 열은 확인란이 있습니다.

내가 확인란을 추가 코드 조각입니다 :

int optionsTotalNum = this.calculateColumsForBlock(block); 
      QuestionsGroup qGroup = block.getQuestionsGroup(); 
      for(int z = 0; z < qGroup.getQuestions().size(); z++) 
      { 
       tableRow = new TableRow(this); 
       Question q = qGroup.getQuestions().get(new Integer(z)); 
       params = new LayoutParams(this.optionWidth, this.rowHeight); 
       params.column = 0; 

       TextView optionName = new TextView(this); 
       optionName.setText(q.getQuestionText().toUpperCase()); 
       optionName.setGravity(Gravity.CENTER); 
       optionName.setLayoutParams(params); 
       tableRow.addView(optionName); 

       for (int index = 1; i < optionsTotalNum; i++) 
       { 
        params.column = index; 
        CheckBox check = new CheckBox(this); 

        int id = ((z + 1) * 100) + index; 
        check.setId(id); 
        check.setLayoutParams(params); 
        tableRow.addView(check); 
       } 
       table.addView(tableRow, new TableLayout.LayoutParams(
         LayoutParams.FILL_PARENT, 
         this.rowHeight)); 
      } 

내가 동적 ID를 만들 수 int id = ((z + 1) * 100) + index;를 사용하지만 반복 이드는 것입니다 있는지 확실하지 않습니다. 즉, 같은 ID로 두 가지 견해를 가질 지 확신 할 수 없습니다. 모든 확인란의 ID가 다르다는 것을 알고 있지만 TextViewsTableLayoutTableRows이 있으며 CheckBox에 사용 된 ID를 사용할 수 있는지 여부는 알 수 없습니다.

ID가 동일한 두 개의보기가있는 경우 findViewById()은 어떻게됩니까?
같은 ContentView에 동일한 ID로 두 개 이상의보기를 가질 수 있습니까?
모든 확인란을 고유하게 식별하는 더 좋은 방법이 있습니까?

답변

1

글쎄, 런타임에 추가하기 때문에 .. 당신은 id를 설정할 필요가 없습니다. 당신은 삽입 주문을 유지하고 그들을 직접적으로 액세스하는 콜렉션에 모든 것을 유지할 수 있습니다 ... 원한다면 똑같은 아이디어로 계속하려면 .. 여기에 어떤 복잡한 일도하지 말아요. 정적 카운터을 클래스 수준으로 유지하십시오. ID로 설정 한 다음 그것을 증가 시키십시오 ...

+0

답변 해 주셔서 감사합니다. 이러한 확인란을 사용하여 컬렉션을 만드는 경우 해당 확인란에 대한 참조 만 저장합니다. 그렇습니까? 나는 더 이상 만들지 않을 것이다. 미안하지만 내 기억 관리 지식은 제한적입니다. – VansFannel

+1

@VansFannel .. 네, 맞아요 ... – ngesh

0

unique ID는 단순히 을 사용합니다. int id = (int) java.util.Date(). getTime() 이 함수는 현재 날짜와 시간을 밀리 초 단위로 반환하며 항상 고유합니다. 이 ID를 나중에 참조 할 수 있도록 배열 (또는 다른 컨테이너)에 저장하십시오.

관련 문제