首页 > 解决方案 > 防止芯片双击

问题描述

我有一个chipgroup和一些chips里面。我遍历这个chipgroup,得到每一个chip并为它添加一个checkedChangeListener

for (int i = 0; i < chipGroup.getChildCount(); i++) {
            final Chip chip = (Chip) chipGroup.getChildAt(i);
            chip.setOnCheckedChangeListener((buttonView, isChecked) -> {
                 //My code
            });
        }

因此,当我打开我的应用程序并单击chip,例如chip1,它会选择它。然后,当我第二次单击chip1时,它也会触发checkedChangeListener并在其中运行我的代码。isChecked状态没有帮助,因为它只是像true->false->true->false每次点击一样改变它的值。但我只是不想在里面运行我的代码onCheckedChangeListener,如果chip is已经检查过的话。我认为的一种解决方案是将我选择的内容保存chip在内部fragmentViewModel. 你的解决方案是什么?

标签: javaandroidandroid-chips

解决方案


我相信您可以setOnCheckedChangeListener在chipGroup 上设置一个而不是每个单独的芯片。该侦听器将传入一个 ID 和 isChecked 作为参数。我相信在群组中使用此回调将有助于解决您的问题。希望这有助于解决您遇到的问题。

有关https://material.io/components/chips/android#using-chips的更多信息


推荐阅读