patternjavaMinor
Refactoring RadioGroup setter code?
Viewed 0 times
refactoringradiogroupcodesetter
Problem
I am setting different
For refactoring purpose could I reduce the size of this code? How?
RadioGroup like this:fragment.setT1RadioGroup((RadioGroup)fragView.findViewById(rowids[0]).findViewById(R.id.t1_radiogroup));
fragment.setT2RadioGroup((RadioGroup)fragView.findViewById(rowids[1]).findViewById(R.id.t1_radiogroup));
fragment.setT3RadioGroup((RadioGroup)fragView.findViewById(rowids[2]).findViewById(R.id.t1_radiogroup));
fragment.setT4RadioGroup((RadioGroup)fragView.findViewById(rowids[3]).findViewById(R.id.t1_radiogroup));
fragment.setT5RadioGroup((RadioGroup)fragView.findViewById(rowids[4]).findViewById(R.id.t1_radiogroup));
fragment.setT6RadioGroup((RadioGroup)fragView.findViewById(rowids[5]).findViewById(R.id.t1_radiogroup));
fragment.setT7RadioGroup((RadioGroup)fragView.findViewById(rowids[6]).findViewById(R.id.t1_radiogroup));
fragment.setT8RadioGroup((RadioGroup)fragView.findViewById(rowids[7]).findViewById(R.id.t1_radiogroup));
fragment.setT9RadioGroup((RadioGroup)fragView.findViewById(rowids[8]).findViewById(R.id.t1_radiogroup));
fragment.setT10RadioGroup((RadioGroup)fragView.findViewById(rowids[9]).findViewById(R.id.t1_radiogroup));For refactoring purpose could I reduce the size of this code? How?
Solution
Assuming that
In your fragment, use
In your activity, or whatever it is:
Whenever you find yourself using multiple numbered methods that does very similar things, think: Array!! (or possibly
setT5RadioGroup only sets a variable within the fragment:In your fragment, use
RadioGroup[] radioGroups = new RadioGroup[10];setTRadioGroup(int number, RadioGroup grp) {
this.radioGroups[number] = grp;
}In your activity, or whatever it is:
for (int i = 0; i < rowids.length; i++) { // assuming rowids.length is 10
RadioGroup grp = (RadioGroup)fragView.findViewById(rowids[i]).findViewById(R.id.t1_radiogroup);
fragment.setTRadioGroup(i, grp);
}Whenever you find yourself using multiple numbered methods that does very similar things, think: Array!! (or possibly
List if you want to be able to add/remove dynamically)Code Snippets
setTRadioGroup(int number, RadioGroup grp) {
this.radioGroups[number] = grp;
}for (int i = 0; i < rowids.length; i++) { // assuming rowids.length is 10
RadioGroup grp = (RadioGroup)fragView.findViewById(rowids[i]).findViewById(R.id.t1_radiogroup);
fragment.setTRadioGroup(i, grp);
}Context
StackExchange Code Review Q#39468, answer score: 6
Revisions (0)
No revisions yet.