2011-07-07 19 views
16

¿Hay alguna API/biblioteca de validación de formularios madura para Android? He encontrado http://code.google.com/p/android-binding/ pero parece que está bajo un gran desarrollo.¿Biblioteca de validación de formularios para Android?

ACTUALIZACIÓN: Solo para aclarar mi pregunta. Actualmente, he validado la validación de formularios de forma imperativa. Y me gustaría saber si hay una biblioteca de validación de formularios madura que me permita especificar validadores de forma declarativa (por ejemplo, directamente en XML o en código usando anotaciones o por una forma funcional y fluida, ...).

Respuesta

19

La biblioteca ahora admite anotaciones, puede validar sus campos con solo agregarlos. Aquí hay un fragmento de código de ejemplo.

@NotEmpty 
@Order(1) 
private EditText fieldEditText; 

@Checked(message = "You must agree to the terms.") 
@Order(2) 
private CheckBox iAgreeCheckBox; 

@Length(min = 3, message = "Enter atleast 3 characters.") 
@Pattern(regex = "[A-Za-z]+", message = "Should contain only alphabets") 
@Order(3) 
private TextView regexTextView; 

@Password 
@Order(4) 
private EditText passwordEditText; 

@ConfirmPassword 
@Order(5) 
private EditText confirmPasswordEditText; 

La anotación de la orden es opcional y especifica el orden en que se deben validar los campos. Esto SOLO es necesario si desea conservar el orden de los campos durante la validación. También hay otras anotaciones como @Email, @IpAddress, @Isbn, etc.,

Android estudio/Gradle

compile 'com.mobsandgeeks:android-saripaar:2.0.2' 

para descargar la última versión disponible.

Eclipse
Usted puede descargar el tarro de here y añadirlo a su directorio Android libs.

respuesta Viejo (Saripaar v1)
he escrito una biblioteca para su validación. Aquí está el associated blog y el project. Lo utilicé con éxito en aplicaciones de producción y actualmente satisface la mayoría de los escenarios comunes que enfrentamos en formularios de validación para Android. Hay reglas que vienen de la caja y si necesita escribir la suya, puede hacerlo escribiendo su propia Regla.

Aquí hay un fragmento que ilustra el uso de la biblioteca.

validator.put(nameEditText, Rules.required("Name is required.")); 
validator.put(nameEditText, Rules.minLength("Name is too short.", 3)); 
validator.put(emailEditText, Rules.regex("Email id is invalid.", Rules.REGEX_EMAIL, trim)); 
validator.put(confirmPwdEditText, Rules.eq("Passwords don\'t match.", pwdEditText); 

También hay or y and reglas que permiten llevar a cabo && y || operaciones en varias normas. También existe una regla compositeOr y compositeAnd que le permite realizar validaciones entre varias Vistas.

Si alguno de ellos parece ser insuficiente, siempre puede escribir su propia regla ampliando la clase Rule.

+0

+1 Gracias por la información. ¿Hay ValidatorListeners disponibles que, p. resaltar los cuadros de entrada de error, etc.? –

+0

Recibirá failView y failedRule en la devolución de llamada onFailure. Si desea resaltar los campos EditText, siempre puede llamar a los métodos setError() o requestFocus(). La regla fallida tendrá un mensaje de error cuando pueda obtener llamando a failedRule.getFailureMessage(). –

+0

¿Está planeando alguna extensión declarativa para eso? (Eso solo se puede aplicar y no necesita codificarlo todas las veces). –

0

Si quiere validar los campos de texto (EditText), le sugiero que use Pattern y Matcher con expresiones regulares, por supuesto que no estamos usando la API de Android aquí, pero la API java de Android lo permite.

+0

Sugiere crear una biblioteca de validación propia, pero mi pregunta es si ya existe alguna que esté madura. –

+0

esta es solo la manera madura de hacer lo que pienso, así ... –

0

Utilizando cualquiera

android.widget.AutoCompleteTextView.Validator; 
myTextview.setValidator(myCustomValidator); 

o myTextView.setError(error-message) en un onTextChangedListener funciona bien y el segundo tiene muy buena pinta.

+0

Ver la actualización. (He actualizado la pregunta para ser más claro.) –

0

Esta será la forma más sencilla y madura para validar los textos de entrada o formas:

private EditText et_first_name; 
et_first_name = (EditText)findViewById(R.id.et_first_name); 
et_first_name = (EditText)findViewById(R.id.et_first_name); 
first_name.matches("^(?i)(?=.{1,20}$)([A-Za-z]+[A-Za-z0-9-_.]*$)"); // use the regex expression inside brackets and returns the error status . 
+0

Pero esta no es una manera declarativa de especificar validadores. (Actualmente, lo he codificado como usted sugiere, pero estoy buscando una mejor manera.) –

3

recomendaría OVal

public class BusinessObject { 

@NotNull 
@NotEmpty 
@Length(max=32) 
private String name; 

... 
} 

// collect the constraint violations 
List<ConstraintViolation> violations = validator.validate(bo); 

planeo que lo utiliza en mi próximo proyecto ya tiene una variedad de lenguajes de expresión, pero solo se requiere Java.

No es un compilador JSR303, pero también admite esas anotaciones.

+0

¿Conoces algún enlace de interfaz de usuario de Android para esa biblioteca? –

+0

Supongo que debe vincularlo manualmente, pero creo que el Validator funcionará en cualquier clase como Formulario o Diálogo, ya que puede annociar cualquier método que cree o sobreescriba. – kromit

+0

Estoy buscando algo que también ayude con la interfaz de usuario, pero gracias por una pista +1. –

0

biblioteca Uso oval para la validación de androide Se biblioteca de validación basada en objetos utilizados en las clases de objetos

Cuestiones relacionadas