android checkbox状态不刷新,android开发分享更改checkbox的值,而不触发onCheckChanged

在Android开发中,当需要更改Checkbox的值但不想触发onCheckedChangeListener时,可以采取一些策略。例如,先移除监听器,改变状态后再重新设置监听器。此外,可以创建自定义Checkbox类,提供一个不会触发监听器的方法来改变状态。还有使用标签来判断是否应忽略状态变化。这里提供了多种解决方案供开发者选择。
摘要由CSDN通过智能技术生成

不,你做不到。 onCheckedChanged方法直接从setChecked调用。 你可以做的是以下几点:

mCheck.setOnCheckedChangeListener (null); mCheck.setChecked (false); mCheck.setOnCheckedChangeListener (mListener);

查看CheckBox的来源 ,并执行setChecked :

public void setChecked(boolean checked) { if (mChecked != checked) { mChecked = checked; refreshDrawableState(); // Avoid infinite recursions if setChecked() is called from a listener if (mBroadcasting) { return; } mBroadcasting = true; if (mOnCheckedChangeListener != null) { mOnCheckedChangeListener.onCheckedChanged(this, mChecked); } if (mOnCheckedChangeWidgetListener != null) { mOnCheckedChangeWidgetListener.onCheckedChanged(this, mChecked); } mBroadcasting = false; } }

你只需使用setonclickListener,它会正常工作,这是非常简单的方法,谢谢:)

另一种可能的方法是通过使用自定义CheckBox:

public class CheckBox extends AppCompatCheckBox { private OnCheckedChangeListener mListener; public CheckBox(final Context context) { super(context); } public CheckBox(final Context context, final AttributeSet attrs) { super(context, attrs); } public CheckBox(final Context context, final AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void setOnCheckedChangeListener(final OnCheckedChangeListener listener) { mListener = listener; super.setOnCheckedChangeListener(listener); } public void setChecked(final boolean checked, final boolean alsoNotify) { if (!alsoNotify) { super.setOnCheckedChangeListener(null); super.setChecked(checked); super.setOnCheckedChangeListener(mListener); return; } super.setChecked(checked); } public void toggle(boolean alsoNotify) { if (!alsoNot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值