Question

J'ai environ 60 groupes de radio que je dois enregistrer un écouteur pour. À l'heure actuelle est ce que je fais:

    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);

et ainsi de suite pour les 60 groupes de radio. Est-il possible de mettre tous les groupes de radio sur le fragment d'enregistrer à un auditeur commun en une seule déclaration ou deux sans avoir à taper ce code bien? Merci

Était-ce utile?

La solution

Si tous les éléments de radiogroup partagent le même parent, vous pouvez itérer en utilisant et href="http://developer.android.com/reference/android/view/ViewGroup.html#getChildCount%28%29" rel="nofollow"> ViewGroup .getChildCount . Quelque chose comme ceci:

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);
    }
}

Autres conseils

Une solution simple serait de créer une méthode dans votre activité ou quelle que soit la classe que vous écrivez, quelque chose comme ceci:

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

Ensuite, appelez cette méthode à partir de votre code comme ceci:

registerListenerToGroup(R.id.rdoGrp1);
registerListenerToGroup(R.id.rdoGrp2);
registerListenerToGroup(R.id.rdoGrp3);
//etc.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top