Frage

Ich habe ungefähr 60 Radiogruppen, für die ich einen Hörer registrieren muss. Derzeit mache ich es so:

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

und so weiter für die 60 Funkgruppen. Gibt es eine Möglichkeit, alle Radiogruppen auf dem Fragment festzulegen, um sich in einer oder zwei einzelnen Angaben an einen gemeinsamen Hörer zu registrieren, ohne diesen Code eingeben zu müssen? Vielen Dank

War es hilfreich?

Lösung

Wenn alle RadioGroup -Elemente denselben übergeordneten teilen, können Sie es verwenden, wenn Sie es verwenden, wenn Sie verwenden ViewGroup.getchildat und ViewGroup.getchildCount. Etwas wie das:

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

Andere Tipps

Eine einfache Lösung wäre, eine Methode in Ihrer Aktivität oder in der Klasse zu erstellen, die Sie schreiben, so ähnlich wie folgt:

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

Rufen Sie dann diese Methode von Ihrem Code wie folgt aus:

registerListenerToGroup(R.id.rdoGrp1);
registerListenerToGroup(R.id.rdoGrp2);
registerListenerToGroup(R.id.rdoGrp3);
//etc.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top