Android 是否有任何方法可以根据动态值限制列表视图中复选框的选择?
我有一个列表视图(比如10个带有复选框的项目),我想限制用户选择Android 是否有任何方法可以根据动态值限制列表视图中复选框的选择?,android,listview,checkbox,Android,Listview,Checkbox,我有一个列表视图(比如10个带有复选框的项目),我想限制用户选择I项目(即,I=1或2或3或4…) 假设如果i=3,用户只能从列表中选择3个复选框,他将无法选择第4个复选框。如果我们滚动列表视图,这些项将被重置为旧值,正如我们所知,可以通过在模型类中使用布尔状态来处理 如何限制用户从列表视图中选择特定项目 这是我的听众: final int i=3; holder.cb_check.setOnCheckedChangeListener(new OnCheckedChangeListene
I
项目(即,I=1或2或3或4…)
假设如果i=3
,用户只能从列表中选择3个复选框,他将无法选择第4个复选框。如果我们滚动列表视图,这些项将被重置为旧值,正如我们所知,可以通过在模型类中使用布尔状态来处理
如何限制用户从列表视图中选择特定项目
这是我的听众:
final int i=3;
holder.cb_check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
model.setChecked(isChecked);
if (isChecked) {
GlobalCounter++;
} else {
GlobalCounter--;
}
if (GlobalCounter>i) {
buttonView.setChecked(false);
model.setChecked(false);
}
}
});
你可以使用 布尔选中=((复选框)视图).isChecked()强> 如果(!选中){ //如果需要,在此处执行操作 } 但在您的情况下,您必须管理3个信息复选框中的任何一个
final int i=3;
holder.cb_check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (GlobalCounter>i) {
buttonView.setChecked(false);
return;
}
model.setChecked(isChecked);
if (isChecked) {
GlobalCounter++;
} else {
GlobalCounter--;
}
}
});
以下是我的答案,适用于那些想在列表视图中添加特定选项的人 onClickListener上的内部适配器类:
holder.cb_check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
model.setChecked(isChecked);
if (isChecked) {
count++;
} else {
count--;
}
Log.d("ttt", "c="+count+" mc="+max_count);
if (count>max_count) {
buttonView.setChecked(false);
model.setChecked(false);
count=max_count;//count will not exceed the limit.
Toast.makeText(context, "You can only select "+max_count, Toast.LENGTH_SHORT).show();
}
}
});
初始化int计数=0,max_计数=0设置适配器时,将代码>全局值传递给适配器类,并将最大选择计数传递给适配器类
这里是值3:
final ComboAdapter adapter=new ComboAdapter(getApplicationContext(), R.layout.custom_items, arr_list,3);
lv_combo.setAdapter(adapter);
这里有一个建议。维持一个柜台。每次用户选中一个复选框时,增加它,取消选中它,然后减少它。用数值检查计数器。如果大于允许值,则不允许他检查。我已编辑了我的问题,请检查我已经尝试过了。需要一个好的方法。我建议您将计数器的检查移到setChecked语句上方。是否要控制适配器内部或保存listview的活动/片段中的复选框?@UmaKanth…是的,谢谢您的建议。