Validando dados com Android Saripaar 2

Felipe Oliveira
Android Dev BR
Published in
3 min readApr 25, 2016

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.

--

--