package in.ceeq.views;
import android.content.Context;
import android.preference.SwitchPreference;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Switch;
/**
*
* @author caoyachao1982@gmail.com
*
*/
class SwitchPreference_ extends SwitchPreference {
/**
* Construct a new SwitchPreference with the given style options.
*
* @param context
* The Context that will style this preference
* @param attrs
* Style attributes that differ from the default
* @param defStyle
* Theme attribute defining the default style options
*/
public SwitchPreference_(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* Construct a new SwitchPreference with the given style options.
*
* @param context
* The Context that will style this preference
* @param attrs
* Style attributes that differ from the default
*/
public SwitchPreference_(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Construct a new SwitchPreference with default style options.
*
* @param context
* The Context that will style this preference
*/
public SwitchPreference_(Context context) {
super(context, null);
}
@Override
protected void onBindView(View view) {
// Clean listener before invoke SwitchPreference.onBindView
ViewGroup viewGroup = (ViewGroup) view;
clearListenerInViewGroup(viewGroup);
super.onBindView(view);
}
/**
* Clear listener in Switch for specify ViewGroup.
*
* @param viewGroup
* The ViewGroup that will need to clear the listener.
*/
private void clearListenerInViewGroup(ViewGroup viewGroup) {
if (null == viewGroup) {
return;
}
int count = viewGroup.getChildCount();
for (int n = 0; n < count; ++n) {
View childView = viewGroup.getChildAt(n);
if (childView instanceof Switch) {
final Switch switchView = (Switch) childView;
switchView.setOnCheckedChangeListener(null);
return;
} else if (childView instanceof ViewGroup) {
ViewGroup childGroup = (ViewGroup) childView;
clearListenerInViewGroup(childGroup);
}
}
}
}