2011-11-30 3 views
0

청취자를 등록해야하는 약 60 개의 라디오 그룹이 있습니다. 현재 내가하는 일은 다음과 같습니다. 012 라디오는 60 라디오 그룹에 대해다수의 라디오 그룹에 공통적 인 청취자

RadioGroup rg1 = (RadioGroup) getView().findViewById(R.id.rdoGrp1); 
    rg1.setOnCheckedChangeListener(this); 
    rg1 = (RadioGroup) getView().findViewById(R.id.rdoGrp2); 
    rg1.setOnCheckedChangeListener(this); 
    rg1 = (RadioGroup) getView().findViewById(R.id.rdoGrp3); 
    rg1.setOnCheckedChangeListener(this); 

등이 있습니다. 프래그먼트의 모든 라디오 그룹을이 단일 코드를 입력하지 않고 단일 명령문 또는 두 개의 공통 리스너에 등록하도록 설정할 수 있습니까? 감사합니다

답변

3

모든 RadioGroup 요소가 동일한 부모를 공유하는 경우 ViewGroup.getChildAtViewGroup.getChildCount을 사용하여 반복 할 수 있습니다. 이 같은 것 :

ViewGroup parent = (ViewGroup) findViewById(R.id.ParentViewId); 
for (int i = 0; i < parent.getChildCount(); i++) { 
    View currentView = parent.getChildAt(i); 
    if (currentView instanceof RadioGroup) { 
     ((RadioGroup) currentView).setOnCheckedChangeListener(this); 
    } 
} 
+0

감사합니다. 좋은 생각이야! 모든 라디오 버튼에 공통된 부모를 만들려고합니다. – user1005585

+0

고마워! 그것은 작동합니다! – Kevan

0

쉬운 해결책은 당신의 활동이나 어떤 클래스는,이 같은 작성의 방법을 만들 것입니다 : 다음

private void registerListenerToGroup(int groupId) { 
    RadioGroup rg = (RadioGroup) getView().findViewById(groupId); 
    rg.setOnCheckedChangeListener(this); 
} 

을 다음과 같이 코드에서이 메소드를 호출

registerListenerToGroup(R.id.rdoGrp1); 
registerListenerToGroup(R.id.rdoGrp2); 
registerListenerToGroup(R.id.rdoGrp3); 
//etc. 
+0

감사합니다. – user1005585

관련 문제