繁体   English   中英

Android多个复选框

[英]Android multiple checkboxes

基本上我有5行和5个复选框,这只是一行。 如您所见,它很杂乱,其中5个甚至更糟。

我刚刚开始学习android,所以我还不熟悉所获得的选项,但是通常我想我要么将所有盒子放入一个数组中,然后遍历它,要么为一行创建一个JPanel并添加面板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));

一种解决方案是使用ButterKnife中的“查看列表”选项。

@Bind({ R.id.row1checkBox1, R.id.row1checkBox2, R.id.row1checkBox3})
List<CheckBox> checkBoxViews;

然后,您可以使用ButterKnife.apply一次对所有视图进行操作,也可以迭代该列表。

我想您可以按照这些方式尝试一些方法。 完全未经测试:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM