我有一个自定义列表视图,其中的每个项目都有一个复选框和一个文本字段。如果第一行的复选框已启用,我想禁用列表视图的每隔一行中的复选框。
答案 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=true
。
adapter.notifyDataSetChanged()
这会将isFirstEnabled
设置为true