gpt4 book ai didi

java - 选中一定数量的复选框后禁用复选框

转载 作者:行者123 更新时间:2023-12-01 22:04:59 25 4
gpt4 key购买 nike

我有 6 个复选框,例如,如果我有一个变量 a=2 让用户选中 2 个复选框并禁用另一个复选框。如果我有 a=3 让用户选中 3 个复选框并禁用其余的等等......这就是我尝试过的:

 public void itemClicked(View v) {
//code to check if this checkbox is checked!

CheckBox checkBox = (CheckBox)v;

check1=(CheckBox)findViewById(R.id.check1);
check2=(CheckBox)findViewById(R.id.check2);
check3=(CheckBox)findViewById(R.id.check3);
check4=(CheckBox)findViewById(R.id.check4);
check5=(CheckBox)findViewById(R.id.check5);
check6=(CheckBox)findViewById(R.id.check6);



if(a==1)

{

only one can be checked the others get disabled

}




}

}

xml 文件的一部分是:

<CheckBox android:id="@+id/check1"
android:layout_width="140dp"
android:layout_height="250dp"
android:scaleX="1.0"
android:scaleY="1.0"
android:button="@layout/cb_selector"
android:layout_marginLeft="80dp"
android:layout_marginTop="505dp"
android:onClick="itemClicked"
/>



<CheckBox android:id="@+id/check2"
android:layout_width="140dp"
android:layout_height="250dp"
android:scaleX="1.0"
android:scaleY="1.0"
android:button="@layout/cb_selector"
android:layout_marginLeft="365dp"
android:layout_marginTop="505dp"
/>

我怎样才能实现这个目标?

最佳答案

您需要一个复选框数组和 onCheckedChange 中的变量检查。

CheckBox[] cba;      

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
cba = new CheckBox[]{
(CheckBox)findViewById(R.id.check1),
(CheckBox)findViewById(R.id.check2),
(CheckBox)findViewById(R.id.check3),
(CheckBox)findViewById(R.id.check4),
(CheckBox)findViewById(R.id.check5),
(CheckBox)findViewById(R.id.check6)
};
//here set onChechedChange for all your checkboxes
for (CheckBox cb:cba) {
cb.setOnCheckedChangeListener(cbListener);
}

}

CompoundButton.OnCheckedChangeListener cbListener = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkEnoughAndMakeDisabled(cba);
}
};

private void checkEnoughAndMakeDisabled(CheckBox checkBoxes[]){
int countChecked =0;
for (CheckBox cb:checkBoxes){
cb.setEnabled(true);
if (cb.isChecked()) countChecked++;
}
//your variable
if (a <= countChecked) {
for (CheckBox cb:checkBoxes){
if (!cb.isChecked())cb.setEnabled(false);
}
}
}

Ps:我还认为解决此类问题的最佳实践是使用 Data-Binding ,但这是另外一个故事了

关于java - 选中一定数量的复选框后禁用复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32957567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com