我有listview图像和复选框我必须限制用户检查5个复选框并在列表视图中禁用或隐藏其他复选框,并且当用户取消选中之前选中的五个复选框之一时应启用复选框或再次可见。
答案 0 :(得分:0)
您可以通过计数器变量执行此操作,因为您还必须使用迭代器检查所有复选框状态,或者您可以输入复选框的单击事件以检查是否达到限制,如果在检查完第5后已达到限制一个然后禁用另一个复选框,当它少于那么然后启用它重置复选框
答案 1 :(得分:0)
如果您只是想阻止用户选择超过5个 - 这意味着他们必须手动取消选中项目 - 只需使用像pratik建议的计数器变量。如果要自动取消选中用户选中的最旧内容,我将使用所选索引的队列。然后你可以弹出最旧的东西,取消选中它,然后将新的索引添加到队列中。你可以在onItemClickListener或onItemSelectedListener
中完成所有这些答案 2 :(得分:0)
您可以使用onCheckedChangeListener。
添加一个私有整数:
private int checkedCounter;
初始化:
checkedCounter = 0;
设置监听器:
yourCheckbox = (CheckBox) findViewById(R.id.itsId);
yourCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (checkedCounter == 5 && isChecked)
{
yourCheckbox.setChecked(false);
}
else if checkedCounter == 5 && !isChecked)
{
checkedCounter--;
}
else if (checkedCounter < 5)
{
(isChecked ? checkedCounter++ : checkedCounter--);
}
}
});
我现在无法运行此代码,因此请检查条件。 实际上它也可以用另一种方式完成:当检查5个方框时,你可以在其他方面使用setEnabled(false)方法。