Features

Min SDK : 10

Price : Free

Language : Java

Download

Link : Github

Owner : xeoh

Source Code : Download


Android CheckBoxGroup

version 1.0.1 API Level ≥9 API ≥2.3 API ≥9 MIT LICENSE javadoc

Introduction

CheckBoxGroup provides easy handling of multiple "CheckBox". Don't use switch, if, or multiple listeners for handling CheckBox. Instead, group all CheckBox with CheckBoxGroup. Sample

Requirements

Android API ≥ 2.3 (API Level 9)

Gradle

You can import CheckBoxGroup from jcenter.
repositories {
jcenter()
}
dependencies {
compile 'com.xeoh.android:checkboxgroup:1.0.1'
}

Don't: Traditional way to use CheckBoxes as options

We need to deal with every CheckBox when one changes.
public class MainActivity extends AppCompatActivity {
private ArrayList<String> options = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CheckBox option1Btn = (CheckBox) findViewById(R.id.option1);
CheckBox option2Btn = (CheckBox) findViewById(R.id.option2);
CheckBox option3Btn = (CheckBox) findViewById(R.id.option3);
CheckBox option4Btn = (CheckBox) findViewById(R.id.option4);
CheckBox option5Btn = (CheckBox) findViewById(R.id.option5);
options.add("option1");
options.add("option2");
options.add("option3");
options.add("option4");
options.add("option5");
option1Btn.setOnCheckedChangeListener(onCheckedChangeListener);
option2Btn.setOnCheckedChangeListener(onCheckedChangeListener);
option3Btn.setOnCheckedChangeListener(onCheckedChangeListener);
option4Btn.setOnCheckedChangeListener(onCheckedChangeListener);
option5Btn.setOnCheckedChangeListener(onCheckedChangeListener);
}
private CheckBox.OnCheckedChangeListener onCheckedChangeListener
= new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()) {
case R.id.option1:
if (isChecked) options.add("options1");
else options.remove("options1");
break;
case R.id.option2:
if (isChecked) options.add("options2");
else options.remove("options2");
break;
case R.id.option3:
if (isChecked) options.add("options3");
else options.remove("options3");
break;
case R.id.option4:
if (isChecked) options.add("options4");
else options.remove("options4");
break;
case R.id.option5:
if (isChecked) options.add("options5");
else options.remove("options5");
break;
}
}
Toast.makeText(MainActivity.this,
options.toString(),
Toast.LENGTH_LONG).show();
};
}

Do: Now deal with multiple checkboxes with one class

You can deal with multiple CheckBoxes with CheckBoxGroup. Map your checkBoxes to any value. CheckBoxGroup gives mapped value for all selected checkBoxes.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HashMap<CheckBox, String> checkBoxMap = new HashMap<>();
checkBoxMap.put((CheckBox) findViewById(R.id.option1), "Option1");
checkBoxMap.put((CheckBox) findViewById(R.id.option2), "Option2");
checkBoxMap.put((CheckBox) findViewById(R.id.option3), "Option3");
checkBoxMap.put((CheckBox) findViewById(R.id.option4), "Option4");
checkBoxMap.put((CheckBox) findViewById(R.id.option5), "Option5");
CheckBoxGroup<String> checkBoxGroup = new CheckBoxGroup<>(checkBoxMap,
new CheckBoxGroup.CheckedChangeListener<String>() {
@Override
public void onOptionChange(ArrayList<String> options) {
Toast.makeText(MainActivity.this,
options.toString(),
Toast.LENGTH_LONG).show();
}
});
}
// Becareful. CheckBoxGroup sets onCheckedChangeListener of checkboxes
// internally. If you need identical listeners for each checkboxes implement
// that algorithm with CheckBox.OnClick
}

More Usage

// set option1 and 2 checked, 3,4, and 5 unchecked
checkBoxGroup.setValues(Arrays.asList("Option1", "Option2"));
// get entire checkbox values as ArrayList
ArrayList<String> selectedValues = checkBoxGroup.getValues();
// add option6 and make it checked
checkBoxGroup.add((CheckBox) findViewById(R.id.option6), "Option6", true);
// remove option6
checkBoxGroup.add((CheckBox) findViewById(R.id.option6));
// toggle option5's check value
checkBoxGroup.toggleCheckBox("Option5");
See more on Sample Application and JavaDoc

License

CheckBoxGroup is available under the MIT license. See the LICENSE file for more info.