package com.xtremelabs.robolectric.shadows; import android.widget.Checkable; import android.widget.CompoundButton; import com.xtremelabs.robolectric.internal.Implementation; import com.xtremelabs.robolectric.internal.Implements; /** * Shadows the {@code android.widget.CompoundButton} class. *

* Keeps track of whether or not its "checked" state is set and deals with listeners in an appropriate way. */ @SuppressWarnings({"UnusedDeclaration"}) @Implements(CompoundButton.class) public class ShadowCompoundButton extends ShadowTextView implements Checkable { private boolean checked; private CompoundButton.OnCheckedChangeListener onCheckedChangeListener; @Override public void applyAttributes() { super.applyAttributes(); setChecked(this.attributeSet.getAttributeBooleanValue("android", "checked", false)); } @Implementation @Override public void toggle() { setChecked(!checked); } @Implementation @Override public boolean performClick() { toggle(); return super.performClick(); } @Implementation @Override public boolean isChecked() { return checked; } @Implementation @Override public void setChecked(boolean checked) { if (this.checked != checked) { this.checked = checked; if (onCheckedChangeListener != null) { onCheckedChangeListener.onCheckedChanged((CompoundButton) realView, this.checked); } } } @Implementation public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) { onCheckedChangeListener = listener; } public CompoundButton.OnCheckedChangeListener getOnCheckedChangeListener() { return onCheckedChangeListener; } }