Android是否有任何成熟的表單驗證API /庫? 我找到了http://code.google.com/p/android-binding/,但似乎正在大力發展。適用於Android的表單驗證庫?
更新:只是爲了澄清我的問題。目前,我強制性地對錶單進行了硬編碼。我想知道,如果有一個成熟的表單驗證庫,允許我聲明性地指定驗證器(例如直接在XML中或在使用註釋的代碼中或通過功能流暢的方式,...)。
Android是否有任何成熟的表單驗證API /庫? 我找到了http://code.google.com/p/android-binding/,但似乎正在大力發展。適用於Android的表單驗證庫?
更新:只是爲了澄清我的問題。目前,我強制性地對錶單進行了硬編碼。我想知道,如果有一個成熟的表單驗證庫,允許我聲明性地指定驗證器(例如直接在XML中或在使用註釋的代碼中或通過功能流暢的方式,...)。
該庫現在支持註釋,您可以通過添加它們來驗證您的字段。這是一個示例代碼片段。
@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;
訂單註釋是可選的,並指定了字段驗證的順序。如果您希望在驗證過程中保留字段的順序,這只是必需的。還有一些其他的註釋,比如@Email
,@IpAddress
,@Isbn
等,
的Android工作室/搖籃
compile 'com.mobsandgeeks:android-saripaar:2.0.2'
檢查最新版本。
的Eclipse
您可以從here下載JAR並把它添加到您的Android libs
目錄。
老答(Saripaar V1)
我已經創作了驗證庫。這裏是associated blog和project。我已經成功地將它用於生產應用程序,目前它滿足我們在Android驗證表單中面對的大多數常見情況。有些規則可以直接使用,如果您需要編寫自己的規則,可以通過編寫自己的規則來實現。
下面是一個片段,說明了庫的使用。
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);
也有or
和and
規則,讓你在幾個規則執行&&
和||
操作。還有一個compositeOr
和compositeAnd
規則,允許您在多個視圖之間執行驗證。
如果其中任何一個看起來不夠充分,可以通過擴展Rule類來編寫自己的規則。
如果您的意思是驗證文本字段(EditText),那麼我會建議您使用Pattern和Matcher與正則表達式,當然我們在這裏沒有使用android API,但是android支持java API,因此您可以。
你建議創建自己的驗證庫,但我的問題是有任何已經存在的,這是成熟的。 –
這只是成熟的方式來做,因爲我認爲如此...... –
無論使用
android.widget.AutoCompleteTextView.Validator;
myTextview.setValidator(myCustomValidator);
在
onTextChangedListener
或myTextView.setError(error-message)
工作正常,第二個看起來真的很棒。
看到更新。 (我已經更新了問題更加清楚。) –
這將是簡單和成熟的方法來驗證輸入的文本或表格:
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 .
但這不是指定驗證器的聲明方式。 (目前,我已經按照您的建議對其進行了硬編碼,但我正在尋找更好的方法。) –
我會建議OVal
public class BusinessObject {
@NotNull
@NotEmpty
@Length(max=32)
private String name;
...
}
// collect the constraint violations
List<ConstraintViolation> violations = validator.validate(bo);
我刨使用它在我的下一個項目,因爲有各種各樣的表達式語言,但只有Java很難被要求。
它不是JSR303的編譯器,但也支持這些註釋。
您知道該庫的任何Android UI綁定嗎? –
我想你必須手動綁定它,但我認爲Validator可以在任何類如Form或Dialog上工作,因爲你可以註銷任何你創建或覆蓋的方法。 – kromit
我在尋找一些也可以幫助用戶界面的東西,但是謝謝你提示+1。 –
使用橢圓形庫,用於在Android的 驗證它在對象類
使用,因爲我對我自己這樣的問題打了基於對象的驗證庫,我添加了這個功能,我BARACUS應用框架的核心功能。詳情請參閱http://baracusframework.blogspot.de/2014/01/baracus-from-scratch-part-6-automatic.html。
該概念包括聲明式綁定的表單中的命名驗證器以及任何約束違例消息的自動路由。
+1謝謝您的信息。是否有任何股票ValidatorListeners會例如突出顯示錯誤輸入框等? –
您將在onFailure回調中收到failedView和failedRule。如果要突出顯示EditText字段,則始終可以調用setError()或requestFocus()方法。失敗的規則將通過調用failedRule.getFailureMessage()獲得失敗消息。 –
你是否計劃任何聲明性擴展? (這可以只是應用,你不需要每次都編碼。) –