¿Hay alguna forma de evitar que AlertDialog se cierre con entradas no válidas?

Estoy usando un cuadro de diálogo de alerta de campo de texto simple con un botón positivo y un botón de cancelar. Quiero validar mi cuadro de diálogo de alerta y evitar que el botón hecho cierre el AlertDialog si la entrada no es válida.

¿Hay alguna forma de crear un cuadro de diálogo personalizado para evitar que el controlador PositiveButton onClick () cierre el cuadro de diálogo si falla la validación?

class CreateNewCategoryAlertDialog {
    final EditText editText;
    final AlertDialog alertDialog;

    class PositiveButtonClickListener implements OnClickListener {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String name = editText.getText().toString();
            if(name.equals("")) {
                editText.requestFocus();
                editText.setError("Please enter a name");
                // Some code to stop AlertDialog from closing goes here...
            } else {
                doSomethingUsefulWithName();
            }
        }
    }

    AlertDialog buildAlertDialog(Context context) {
        return new AlertDialog.Builder(context)
        .setTitle(context.getString(R.string.enter_name))
        .setMessage(context.getString(R.string.enter_name_msg))
        .setView(editText)
        .setPositiveButton(context.getString(R.string.done), new PositiveButtonClickListener())
        .setNegativeButton(context.getString(R.string.cancel), null).create();
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta