MsgConfirmDialog.java 3.41 KB
package com.hjx.parent.dialog;

import android.content.Context;
import android.view.View;

import androidx.annotation.NonNull;

import com.hjx.parent.databinding.DialogMessageConfirmBinding;
import com.hjx.parent.function.Function10;

public class MsgConfirmDialog extends BaseDialog<DialogMessageConfirmBinding>{
    private CharSequence title, message, positive, negative;
    private Function10<Boolean> positiveClick, negativeClick;

    private MsgConfirmDialog(Builder builder) {
        super(builder.context);
        title = builder.title;
        message = builder.message;
        positive = builder.positive;
        negative = builder.negative;
        positiveClick = builder.positiveClick;
        negativeClick = builder.negativeClick;
    }

    @Override
    public void initView() {
        binding.tvTitle.setText(title);
        binding.tvMessage.setText(message);
        binding.btnPositive.setText(positive);
        binding.btnNegative.setText(negative);
        binding.btnPositive.setOnClickListener(v -> {
            if (positiveClick != null) {
                if (positiveClick.invoke()) dismiss();
            } else {
                dismiss();
            }
        });
        binding.btnNegative.setOnClickListener(v -> {
            if (negativeClick != null) {
                if (negativeClick.invoke()) dismiss();
            } else {
                dismiss();
            }
        });
        if (positive == null || positive.length() == 0) {
            binding.btnPositive.setVisibility(View.GONE);
        }
        if (negative == null || negative.length() == 0) {
            binding.btnNegative.setVisibility(View.GONE);
        }
    }

    public void show(Function10<Boolean> positiveClick, Function10<Boolean> negativeClick) {
        this.positiveClick = positiveClick;
        this.negativeClick = negativeClick;
        super.show();
    }

    @NonNull
    @Override
    public DialogMessageConfirmBinding getBinding() {
        return DialogMessageConfirmBinding.inflate(getLayoutInflater());
    }

    public static class Builder {
        public Builder(Context context) {
            this.context = context;
        }
        private Context context;
        private CharSequence title = "温馨提示";
        private CharSequence message = "";
        private CharSequence positive = "确定";
        private CharSequence negative = "取消";
        private Function10<Boolean> positiveClick = () -> true;
        private Function10<Boolean> negativeClick = () -> true;

        public Builder setTitle(CharSequence title) {
            this.title = title;
            return this;
        }

        public Builder setMessage(CharSequence message) {
            this.message = message;
            return this;
        }

        public Builder setPositive(CharSequence positive) {
            this.positive = positive;
            return this;
        }

        public Builder setNegative(CharSequence negative) {
            this.negative = negative;
            return this;
        }

        public Builder setPositiveClick(Function10<Boolean> positiveClick) {
            this.positiveClick = positiveClick;
            return this;
        }

        public Builder setNegativeClick(Function10<Boolean> negativeClick) {
            this.negativeClick = negativeClick;
            return this;
        }

        public MsgConfirmDialog build() {
            return new MsgConfirmDialog(this);
        }
    }
}