Java 防止芯片双击
我有一个Java 防止芯片双击,java,android,android-chips,Java,Android,Android Chips,我有一个芯片组和一些芯片。我循环遍历这个芯片组,获取每个芯片,并为其添加一个checkedChangeListener for (int i = 0; i < chipGroup.getChildCount(); i++) { final Chip chip = (Chip) chipGroup.getChildAt(i); chip.setOnCheckedChangeListener((buttonView, isChecked) -&g
芯片组
和一些芯片
。我循环遍历这个芯片组
,获取每个芯片
,并为其添加一个checkedChangeListener
for (int i = 0; i < chipGroup.getChildCount(); i++) {
final Chip chip = (Chip) chipGroup.getChildAt(i);
chip.setOnCheckedChangeListener((buttonView, isChecked) -> {
//My code
});
}
for(int i=0;i{
//我的代码
});
}
因此,当我打开我的应用程序并点击chip
,例如chip1
,它就会选择它。然后,当我第二次点击chip1
时,它也会触发checkedChangeListener
,并在其中运行我的代码。isChecked
状态没有帮助,因为它只是在每次单击时更改它的值,如true->false->true->false
。但是如果芯片已经被检查过,我就不想在onCheckedChangeListener
中运行我的代码。
我认为一个解决方案是将我选择的芯片
保存在片段
或视图模型
中。您的解决方案是什么?我相信您可以在芯片组上设置一个设置checkedChangeListener
,而不是每个芯片。该侦听器将传入一个ID,并作为参数进行检查。我相信在小组中使用此回调将有助于解决您的问题。希望这有助于解决您遇到的问题
有关的更多信息,为什么不能简单地使用isChecked值?如果这是假的,那么以前它是真的,对吗?还是希望用户只检查一次?你可能会发现来自Evgeny的建议很有帮助。这与你的问题类似,但对于Android中的一个开关,这是因为假设用户第一次点击chip1,结果现在为真,然后他第二次点击,结果为假,现在用户第三次点击,结果现在为真。所以用户在同一个芯片上点击3次。我想要的是,当用户第二次点击同一个芯片时,不要调用onCheckedChangeListener,或者不要计算其中的代码。类似这样的。谢谢,我会看看这个。但是我怎么才能确定isChecked状态呢?你看我需要一些替代品。当用户执行点击芯片时,芯片已经将其值更改为true,我无法确定在点击之前是否检查了芯片。我想我需要将当前选择的芯片保存在某个地方,以便在执行单击后进行检查。侦听器方法会传递芯片组。因此,您应该能够引用group.getCheckedChipIds
。然后遍历该列表,查看它是否包含checkedd
。您可以通过对从中检索到的值求反来实现这一点。如果您抓取组.getCheckedChipIds
并且该复选框存在于列表中,则将该值取反,这将给出更改前的值。如果这有道理的话。现在,如果您试图跟踪所有更改,那么您可以使用地图或其他东西来跟踪。