Validando dados com Android Saripaar 2
A lib Android Saripaar é um UI form validator para Android de uso muito simples. Hoje aprenderemos a usar as regras de validação existentes na lib.
Instalando a dependência
No arquivo build.gradle do módulo do seu aplicativo(app, por exemplo), inclua nas dependências:
compile 'com.mobsandgeeks:android-saripaar:(versão)'
Para quem usa ProGuard será necessário adicionar o seguinte trecho :
-keep class com.mobsandgeeks.saripaar.** {*;}
-keep @com.mobsandgeeks.saripaar.annotation.ValidateUsing class * {*;}
Após a dependência ter sido sincronizada, já podemos começar a brincar.
Usando as validações do Android Saripaar
Vamos criar uma validação de um form bem simples, vamos pedir apenas email, senha e confirmação da senha:
@NotEmpty
@Email
private EditText mInputEmail; // Um campo de entrada para email
@Password(min = 6, scheme = Password.Scheme.NUMERIC)
private EditText mInputPassword; // Um campo de entrada para a senha
@ConfirmPassword
private EditText mInputPasswordConfirmation; // Confirmação da senha
Neste primeiro passo usamos anotações em nossos EditText, essas anotações são importadas do pacote com.mobsandgeeks.saripaar.annotation, onde existem outras. No nosso form usamos apenas 4:
@NotEmpty // indica que o campo anotado não pode ser vazio@Email // indica que o valor preenchido deve ser um email@Password // no password nós passamos 2 parametros , min e scheme , com o min estamos dizendo o número mínimo que nossa senha deve conter e scheme o padrão que nossa senha deve seguir, no nosso caso apenas números@ConfirmPassword // valida o que o próprio nome já diz, confirma se este campo contém a mesma senha do campo anotado como @Password
Já sabemos o que nossas anotações “fazem” , mas a mágica não se dá apenas com isso , então vamos continuar:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ... validator = new Validator(this);
validator.setValidationListener(this);
// ...
}
Agora temos um objeto Validator na nossa view(Activity ou Fragment), recebendo uma nova instância passando quem vai ser validado. Passamos this como parâmetro no construtor, isso quer dizer Activity é o alvo da validação, após criarmos a instância setamos um ValidationListener e usamos this também, com isto estamos dizendo que iremos setar a implementação da interface ValidationListener.
public class MainActivity extends AppCompatActivity implements ValidationListener { ... @Override
public void onValidationSucceeded() {
// a validação passou , siga em frente
}
@Override
public void onValidationFailed(List<ValidationError> errors) {
// algum campo não foi validado , temos a lista dos
// erros para descobrirmos o que aconteceu , veremos
// mais a frente
}}
Por fim , precisamos de alguma ação para submetermos nossos dados. Vamos supor que seja uma botão, no evento onClick do botão iremos fazer o seguinte:
validator.validate();
No clique do botão mandamos o validator validar os dados, essa resposta será ouvida na nossa implementação de ValidationListener.
Colocando as mensagens da validação em seus devidos lugares
O método onValidationFailed nos retorna uma lista de erros. Vamos pegar esses erros e mandar para as Views que foram anotadas:
for (ValidationError error : errors) {
View view = error.getView();
String message = error.getCollatedErrorMessage(this); if (view instanceof EditText) {
((EditText) view).setError(message);
} else {
//quando não for um EditText alertar de outra foma
}
}
Simulando este cenário, deixei o email em branco e coloquei valores diferentes em senha e confirmação de senha. Dessa forma, recebemos nossos alertas de validação. Note que os alertas retornaram mensagens padrão, podemos usar nossas próprias mensagens:
@NotEmpty( message = "sua mensagem de alerta" )
Conclusão
Conseguimos validar um pequeno form de um jeito simples, isso nos poupou tempo. Com o Android Saripaar podemos também criar nossas próprias regras de validação, faleremos disso outro dia. Espero que curtam e deixem seus comentários, o feedback de vocês é muito importante.