Hatena::ブログ(Diary)

プログラミング雑記 このページをアンテナに追加 Twitter

2015-09-23 CheckBoxをチェックさせない

CheckBoxをタッチすると、Clickイベントが発生して必ずチェックされます。

| 01:08 | CheckBoxをタッチすると、Clickイベントが発生して必ずチェックされます。を含むブックマーク

一瞬でもチェックさせない様にするには、

CheckBoxを継承した派生クラスでperformClickをオーバーライドするしか方法はありません。

public class LimitedCheckBox extends CheckBox {
	
	public interface OnLimitCheckEvent {
		
		boolean isLimited();
	}
	
	OnLimitCheckEvent mLimitCheck = null;
	
	public void setOnPerformClick(OnLimitCheckEvent onLimit) {
		
		mLimitCheck = onLimit;
	}
	
	public LimitedCheckBox(Context context) {
		super(context);
	}
	
	public LimitedCheckBox(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	public LimitedCheckBox(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	@Override
	public boolean performClick() {
		
		if ( isChecked() || (mLimitCheck != null && mLimitCheck.isLimited() == false)) {
			
			return super.performClick();
		}
		
		// don't toggle
		return false;
	}
}
トラックバック - http://d.hatena.ne.jp/Korsakov/20150923