package com.door43.translationstudio.util; import android.content.Context; import android.support.v7.widget.SwitchCompat; import android.util.AttributeSet; import android.widget.CompoundButton; /** * Created by joel on 1/28/2015. */ public class BetterSwitchCompat extends SwitchCompat { private OnCheckedChangeListener mListener; public BetterSwitchCompat(Context context) { super(context); } public BetterSwitchCompat(Context context, AttributeSet attrs) { super(context, attrs); } public BetterSwitchCompat(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener){ if(mListener == null) { mListener = listener; } super.setOnCheckedChangeListener(listener); } /** * Sets the check state without triggering any events * @param checked */ public void silentlySetChecked(boolean checked) { toggleListener(false); super.setChecked(checked); toggleListener(true); } /** * Turns the listener on and off * @param on */ private void toggleListener(boolean on){ if(on){ super.setOnCheckedChangeListener(mListener); } else { super.setOnCheckedChangeListener(null); } } }