Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带图像的列表视图&;复选框限制用户仅选择5个复选框_Android - Fatal编程技术网

Android 带图像的列表视图&;复选框限制用户仅选择5个复选框

Android 带图像的列表视图&;复选框限制用户仅选择5个复选框,android,Android,当我必须限制用户选中5个复选框,禁用或使列表视图中的其他复选框不可见时,我使用了带有图像和复选框的listview,并且每当用户取消选中之前选中的五个复选框之一时,应使复选框再次启用或可见。您可以通过计数器变量按需执行此操作还可以使用迭代器检查所有复选框状态,或者您可以在复选框的单击事件中检查它是否达到限制,如果在选中第五个复选框后它已经达到限制,则禁用另一个复选框,如果它小于此值,则启用复选框重置,如果您只是想阻止用户选择更多复选框大于5-意味着他们必须手动取消选中项目-只需使用pratik建

当我必须限制用户选中5个复选框,禁用或使列表视图中的其他复选框不可见时,我使用了带有图像和复选框的listview,并且每当用户取消选中之前选中的五个复选框之一时,应使复选框再次启用或可见。

您可以通过计数器变量按需执行此操作还可以使用迭代器检查所有复选框状态,或者您可以在复选框的单击事件中检查它是否达到限制,如果在选中第五个复选框后它已经达到限制,则禁用另一个复选框,如果它小于此值,则启用复选框重置,如果您只是想阻止用户选择更多复选框大于5-意味着他们必须手动取消选中项目-只需使用pratik建议的计数器变量即可。如果您想自动取消选中用户选中的最早的内容,我将使用一个选定索引的队列。然后,您可以弹出最旧的内容,取消选中它,并将新索引添加到队列中。您可以在onItemClickListener或onItemSelectedListener中执行所有这些操作,您可以使用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--);
            }
        }
    });
yourCheckbox=(CheckBox)findViewById(R.id.itsId);
setOnCheckedChangeListener(新的OnCheckedChangeListener()
{   
检查更改后的公共无效(复合按钮视图,布尔值已检查)
{
if(checkedCounter==5&&isChecked)
{
yourCheckbox.setChecked(false);
}
否则,如果checkedCounter==5&&!已检查)
{
校验计数器--;
}
否则如果(检查计数器<5)
{
(isChecked?checkedCounter++:checkedCounter--);
}
}
});
我现在无法运行此代码,请检查条件。
实际上,它也可以通过另一种方式完成:当选中5个框时,您可以使用setEnabled(false)方法。我正在尝试使用getview方法中的onsetcheckedchangedListener来执行此操作。现在我可以选中复选框并捕获复选框的ID,但我想将它们限制为5,并为所有未选中的复选框设置可见性。按照pratik所说的做,并保留一个计数器以显示选中的项目数。当它达到5时,不允许检查视图。我认为使用onItemClick来处理它会更容易,但是。。。