備忘録 〜プログラミング〜

プログラミングに関する事をつらつらと、、

ListPreferenceをタップしたときのアクション

ListPreferenceをタップしたときにダイアログを出さない方法はないものかと色々調べたのでメモ。
ListPreferenceには、onPreferenceClickというクリックをしたら呼び出されるリスナーがあるのですが、これの戻り値をfalseにしてもtrueにしても、ダイアログが呼び出されてしまいます。
このダイアログを出したくない。
そんなときは、ListPreferenceを継承したカスタムListPreferenceを作ります。
こんな感じ。

public class MyPreference extends ListPreference {
    private Context mContext;
    private boolean showDialog = false;

    public MyPreference(Context context) {
        super(context);
        this.mContext = context;
    }

    public MyPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.mContext = context;       
    }

    public void setShowDialog(boolean showDialog){
        this.showDialog = showDialog;
    }

    @Override
    protected void showDialog(Bundle state) {        
        if (this.showDialog) {
            super.showDialog(state);
        } else {
            return;
        }
    }
}

これで、無事にListPreferenceをタップしたときにダイアログを出さないようにする事が出来ましたー。
※参考

Android: prevent preference dialog for preference which must be loaded over the network - Stack Overflow