たくさんのラジオグループの共通のリスナー
-
26-10-2019 - |
質問
リスナーを登録する必要がある約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);
60のラジオグループなど。これほど多くのコードを入力することなく、1つまたは2つのステートメントで共通のリスナーに登録するためにすべてのラジオグループをフラグメント上に設定する方法はありますか?ありがとう
解決
すべての放射層要素が同じ親を共有している場合、使用することができます viewgroup.getChildat と viewgroup.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);
}
}
他のヒント
簡単な解決策は、あなたのアクティビティまたはあなたが書いているクラスにメソッドを作成することです。
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.
所属していません StackOverflow