基本上我有5行5个复选框,这只是一行。 你可以注意到它的混乱,其中有5个甚至更糟。
我刚刚开始学习android所以我还不熟悉我得到的选项,但通常我认为我要么把所有的盒子放在一个数组中并迭代它,或者制作一个JPanel for一行并添加面板5次。
最好的方法是什么?为什么?
/**
* Row 1 checkboxes
*/
CheckBox row1box1 = (CheckBox) findViewById(R.id.row1checkBox1);
CheckBox row1box2 = (CheckBox) findViewById(R.id.row1checkBox2);
CheckBox row1box3 = (CheckBox) findViewById(R.id.row1checkBox3);
CheckBox row1box4 = (CheckBox) findViewById(R.id.row1checkBox4);
CheckBox row1box5 = (CheckBox) findViewById(R.id.row1checkBox5);
row1box1.setOnClickListener(new StartListener(row1box1, chronometer, ringtone));
row1box2.setOnClickListener(new StartListener(row1box2, chronometer, ringtone));
row1box3.setOnClickListener(new StartListener(row1box3, chronometer, ringtone));
row1box4.setOnClickListener(new StartListener(row1box4, chronometer, ringtone));
row1box5.setOnClickListener(new StartListener(row1box5, chronometer, ringtone));
答案 0 :(得分:1)
一种解决方案是使用ButterKnife中的“查看列表”选项。
@Bind({ R.id.row1checkBox1, R.id.row1checkBox2, R.id.row1checkBox3})
List<CheckBox> checkBoxViews;
然后您可以使用ButterKnife.apply
一次对所有视图执行操作,或者您可以迭代列表。
答案 1 :(得分:0)
我想你可以尝试这些方面的东西。完全未经测试:
private int[] checkBoxIds = new int[] { R.id.row1checkBox1, R.id.row1checkBox 2...(etc.)}
private List<CheckBox> checkBoxList= new ArrayList<>(checkBoxIds.length);
for (int i = 0; i < checkBoxIds.length; i++) {
checkBoxList.add(i, (CheckBox) findViewById(checkBoxIds[i]));
checkBoxList.get(i).setOnClickListener(new StartListener(checkBoxList.get(i), chronometer, ringtone);
}