如何确保在android中没有启用两个复选框

时间:2016-01-21 08:42:40

标签: android

我有一个自定义列表视图,其中的每个项目都有一个复选框和一个文本字段。如果第一行的复选框已启用,我想禁用列表视图的每隔一行中的复选框。

3 个答案:

答案 0 :(得分:0)

由于您声明如果单击第一个复选框,则应禁用所有其他复选框,请检查onBindView()以查看是否选中了复选框。如果是,则设置一个值表示它是,并且对于所有以下列表视图条目,将复选框设置为禁用。

onCheckChangedListener():

 checkbox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked()){
                firstCheckboxChecked = true;
            }
    });

然后在你的onBindView中继续:

if(firstCheckBoxChecked){
    checkbox.setEnabled(false);
}

答案 1 :(得分:0)

我在这里提出一些可以帮助你的粗略解决方案。

classs model
{

boolean status;

model(boolean status){

    this.status=status;
}
}


List<model> list_model= new ArrayList<>();
list_model.add(false);
list_model.add(false);
list_model.add(false);
list_model.add(false);

使用listview适配器添加此模型。

//适配器编码

checkbox.checked(check)

//在checkbox.setOncheckedItemSelect方法中写下以下代码。

//您将在该方法中获得已经检查的参数。该参数将放入列表

list_model.add(checked);

//这里调用listview notify datasetchangedListener。

答案 2 :(得分:0)

在适配器中创建一个布尔变量isFirstEnbled。然后点击第一个项目的复选框将此值设置为isFirstEnbled=trueadapter.notifyDataSetChanged()

这会将isFirstEnabled设置为true

重新创建视图