package gueei.binding.viewAttributes.textView; import gueei.binding.Binder; import gueei.binding.ViewAttribute; import gueei.binding.listeners.OnClickListenerMulticast; import android.view.View; import android.widget.CheckedTextView; public class CheckedClickableTextViewAttribute extends ViewAttribute<CheckedTextView, Boolean> implements View.OnClickListener { // we have to use the click handler here, because there is no Checked Listener for CheckedTextViews public CheckedClickableTextViewAttribute(CheckedTextView view) { super(Boolean.class, view, "checkedClickable"); Binder.getMulticastListenerForView(view, OnClickListenerMulticast.class) .register(this); } @Override protected void doSetAttributeValue(Object newValue) { if(getView()==null) return; boolean changeTo = getView().isChecked(); if (newValue==null){ changeTo = false; } if (newValue instanceof Boolean){ changeTo = (Boolean)newValue; } if (newValue instanceof Number){ changeTo = !((Number)newValue).equals(0); } if (changeTo != getView().isChecked()){ Binder.getMulticastListenerForView(getView(), OnClickListenerMulticast.class).nextActionIsNotFromUser(); getView().setChecked(changeTo); } } @Override public Boolean get() { if(getView()==null) return null; return getView().isChecked(); } @Override public void onClick(View v) { if( !getView().isEnabled() ) return; boolean changeTo = getView().isChecked(); getView().setChecked(!changeTo); this.notifyChanged(); } }