效果
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_check_box"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context="com.axnet.buju0711.CheckBoxActivity">
<CheckBox
android:id="@+id/cB1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="篮球"
/>
<CheckBox
android:id="@+id/cB2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="足球"
/>
<CheckBox
android:id="@+id/cB3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="羽毛球"
/>
<CheckBox
android:id="@+id/cB4"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="冰球"
/>
<Button
android:id="@+id/bt1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="button"
android:textAllCaps="false"
/>
<TextView
android:id="@+id/tv1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
</LinearLayout>
代码
public class CheckBoxActivity extends AppCompatActivity {
private TextView tv1;
private CheckBox mCheckBox1;
private CheckBox mCheckBox2;
private CheckBox mCheckBox3;
private CheckBox mCheckBox4;
private Button bt1;
// 保存被选中的文本内容
Map<Integer,String>checkItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check_box);
checkItems=new HashMap<>();
tv1=(TextView)findViewById(R.id.tv1);
bt1=(Button)findViewById(R.id.bt1) ;
mCheckBox1=(CheckBox)findViewById(R.id.cB1);
mCheckBox2=(CheckBox)findViewById(R.id.cB2);
mCheckBox3=(CheckBox)findViewById(R.id.cB3);
mCheckBox4=(CheckBox)findViewById(R.id.cB4);
mCheckBox1.setOnCheckedChangeListener(MyListener);
mCheckBox2.setOnCheckedChangeListener(MyListener);
mCheckBox3.setOnCheckedChangeListener(MyListener);
mCheckBox4.setOnCheckedChangeListener(MyListener);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//遍历集合
String items="";
for(Integer key:checkItems.keySet()){
//拼接字符串
items+=checkItems.get(key);
}
tv1.setText(items);
}
});
}
CompoundButton.OnCheckedChangeListener MyListener=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true){
//保存键值对
checkItems.put(buttonView.getId(),buttonView.getText().toString() );
}else if(isChecked==false){
checkItems.remove(buttonView.getId());
}
}
};
}
重点内容
创建集合存储数据
Map<Integer,String>checkItems;
checkItems=new HashMap<>();
CompoundButton.OnCheckedChangeListener MyListener=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true){
//保存键值对
checkItems.put(buttonView.getId(),buttonView.getText().toString() );
}else if(isChecked==false){
checkItems.remove(buttonView.getId());
}
}
};
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//遍历集合
String items="";
for(Integer key:checkItems.keySet()){
//拼接字符串
items+=checkItems.get(key);
}
tv1.setText(items);
}
});
自定义一个匿名内部类
CompoundButton.OnCheckedChangeListener MyListener=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true){
//保存键值对
checkItems.put(buttonView.getId(),buttonView.getText().toString() );
}else if(isChecked==false){
checkItems.remove(buttonView.getId());
}
}
};
剩下几个checkBox复用这个内部类
mCheckBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true){
//保存键值对
checkItems.put(buttonView.getId(),buttonView.getText().toString() );
}else if(isChecked==false){
checkItems.remove(buttonView.getId());
}
}
});
mCheckBox2.setOnCheckedChangeListener(MyListener);
mCheckBox3.setOnCheckedChangeListener(MyListener);
mCheckBox4.setOnCheckedChangeListener(MyListener);