Oui, je suis l'auteur d'une bibliothèque pour traiter sur Android validations. Il valide EditText
, CheckBox
, RadioButton
, Spinner
par défaut. Vous pouvez également utiliser des annotations pour simplifier la validation.
Vous n'êtes pas limité par les annotations intégrées ou les règles. Vous pouvez toujours étendre la classe Rule
dans la bibliothèque pour valider vos vues et règles personnalisées.
Il prend également en charge asynchrones (comme validations pour vérifier un nom d'utilisateur unique à partir d'un serveur distant.)
Vous pouvez consulter la page du projet de here.
J'ai également écrit un blog qui décrit comment écrire des règles personnalisées lorsque les règles intégrées ne sont pas suffisantes.
Espérons que cela aide.
Modifier (comme une clarification au commentaire de Jonney)
Oui, ce que vous avez présenté est logique. Pour enregistrer un nouveau compte et valider dans le même appel de service Web, vous pouvez effectuer des appels n
pour enregistrer un nouveau compte, mais l'exemple que j'ai décrit dans le blog prendrait n + 1
pour enregistrer un nouveau compte. Cet exemple ne fait que mettre en valeur les capacités du Validator
.
Pour accomplir ce que vous cherchez, vous pouvez simplement écrire une nouvelle règle.
Rule<EditText> registerIfUniqueRule = new Rule<EditText>("Username must be unique.") {
public boolean isValid(EditText view) {
String username = view.getText().toString();
boolean accountRegistered = false;
// Make a call to your web service
// Mode code…
return accountRegistered;
}
}
Maintenant, ajoutez cette règle à votre instance Validator
.
validator.put(usernameEditText, registerIfUniqueRule);
Et à partir de l'un de vos EventListener
s appellent la méthode de validation asynchrone.
validator.validateAsync();
Vous avez terminé;) Le validateur peut avoir des limites, mais pas dans le cas que vous avez mentionné, nous allons réfléchir à de nouvelles façons d'utiliser l'API une fois que nous l'habitude.
Quel type d'entrée essayez-vous de valider? Adresses mail? Rendez-vous? Les numéros de téléphone? Vous êtes sur la bonne voie sans réinventer la roue. Dans mon expérience, réinventer une validation pour un type d'entrée commun conduit souvent à le réinventer avec quelques bugs. : D – Freiheit