我有带有图像和复选框的列表视图,我必须限制用户检查 5 个复选框并禁用或使列表视图中的其他复选框不可见,并且每当用户取消选中先前选中的五个复选框之一时,应使复选框再次启用或可见。
问问题
833 次
3 回答
0
如果您只是想阻止用户选择超过 5 个 - 这意味着他们必须手动取消选中项目 - 只需使用 pratik 建议的计数器变量。如果您想自动取消选中用户检查的最旧的东西,我会使用所选索引的队列。然后你可以弹出最旧的东西,取消选中它,然后将新索引添加到队列中。您可以在 onItemClickListener 或 onItemSelectedListener 中完成所有这些操作
于 2012-10-05T14:57:41.617 回答
0
您可以通过计数器变量来执行此操作,因为您还必须使用迭代器检查所有复选框状态,或者您可以放入复选框的单击事件以检查它是否在检查第 5 个之后已经达到限制然后禁用另一个复选框,当它小于然后启用它重置复选框
于 2012-10-05T14:27:27.613 回答
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)方法。
于 2012-10-05T15:02:01.477 回答