Skip to content
This repository was archived by the owner on Nov 5, 2025. It is now read-only.

Commit 2cb73e2

Browse files
author
John Cordeiro
authored
Merge pull request #3 from Ilhasoft/hotfix/0.6.3
Release 0.6.3
2 parents 77c8d7c + ca6536b commit 2cb73e2

9 files changed

Lines changed: 87 additions & 14 deletions

File tree

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Latest Version: [![Latest version](https://jitpack.io/v/Ilhasoft/data-binding-va
3636

3737
## Sample
3838

39-
<img width='380' src='https://raw.githubusercontent.com/Ilhasoft/data-binding-validator/master/screenshot.png'/>
39+
<img src="usageSample.gif" alt="...">
4040

4141
## Usage
4242

@@ -164,6 +164,10 @@ You can add custom error messages by using the same validation rule name and add
164164
app:validateDateMessage="@{@string/dateErrorMessage}" />
165165
```
166166

167+
### Validating ###
168+
169+
If you want to validate all the fields, you can simply call `validator.validate()`, to validate specific views you can call `validator.validate(view)` or `validator.validate(viewsList)`;
170+
167171
### Validation modes ###
168172

169173
The validation can be applied in two way, field by field or the whole form at once. By default, it's configured field by field, however, you can call `validator.enableFormValidationMode();` to enable the validation of the whole form.

library/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ android {
1414
defaultConfig {
1515
minSdkVersion 15
1616
targetSdkVersion 25
17-
versionCode 2
18-
versionName "0.6.2"
17+
versionCode 3
18+
versionName "0.6.3"
1919
consumerProguardFiles 'proguard-rules.pro'
2020
}
2121
}

library/src/main/java/br/com/ilhasoft/support/validation/Validator.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@ public boolean validate() {
3535
return isAllViewsValid(viewWithValidations);
3636
}
3737

38+
public boolean validate(View view) {
39+
List<View> viewWithValidations = getViewsWithValidation(view);
40+
return isAllViewsValid(viewWithValidations);
41+
}
42+
43+
public <ViewType extends View> boolean validate(List<ViewType> views) {
44+
List<View> viewWithValidations = getViewsWithValidation(views);
45+
return isAllViewsValid(viewWithValidations);
46+
}
47+
3848
private boolean isAllViewsValid(List<View> viewWithValidations) {
3949
boolean allViewsValid = true;
4050
for (View viewWithValidation : viewWithValidations) {
@@ -78,4 +88,12 @@ private List<View> getViewsWithValidation() {
7888
}
7989
return Collections.singletonList(target.getRoot());
8090
}
91+
92+
private <ViewType extends View> List<View> getViewsWithValidation(List<ViewType> views) {
93+
return ViewTagHelper.filterViewsWithTag(R.id.validator_rule, views);
94+
}
95+
96+
private List<View> getViewsWithValidation(View view) {
97+
return ViewTagHelper.filterViewWithTag(R.id.validator_rule, view);
98+
}
8199
}

library/src/main/java/br/com/ilhasoft/support/validation/util/ViewTagHelper.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,30 @@ public static List<View> getViewsByTag(ViewGroup root, int tagId) {
3030
if (child instanceof ViewGroup) {
3131
views.addAll(getViewsByTag((ViewGroup) child, tagId));
3232
}
33+
addViewWhenContainsTag(tagId, views, child);
34+
}
35+
return views;
36+
}
3337

34-
final Object tagValue = child.getTag(tagId);
35-
if (tagValue != null) {
36-
views.add(child);
37-
}
38+
public static List<View> filterViewWithTag(int tagId, View view) {
39+
List<View> viewsWithTags = new ArrayList<>();
40+
addViewWhenContainsTag(tagId, viewsWithTags, view);
41+
return viewsWithTags;
42+
}
3843

44+
public static <ViewType extends View> List<View> filterViewsWithTag(int tagId, List<ViewType> views) {
45+
List<View> viewsWithTags = new ArrayList<>();
46+
for (View view : views) {
47+
addViewWhenContainsTag(tagId, viewsWithTags, view);
48+
}
49+
return viewsWithTags;
50+
}
51+
52+
private static void addViewWhenContainsTag(int tagId, List<View> views, View view) {
53+
final Object tagValue = view.getTag(tagId);
54+
if (tagValue != null) {
55+
views.add(view);
3956
}
40-
return views;
4157
}
4258

4359
}

sample/src/main/java/br/com/ilhasoft/support/validation/sample/MainActivity.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,54 @@
11
package br.com.ilhasoft.support.validation.sample;
22

33
import android.databinding.DataBindingUtil;
4+
import android.databinding.ViewDataBinding;
45
import android.support.v7.app.AppCompatActivity;
56
import android.os.Bundle;
67
import android.util.Log;
78
import android.view.View;
89
import android.widget.Toast;
910

11+
import java.util.Arrays;
12+
1013
import br.com.ilhasoft.support.validation.Validator;
1114
import br.com.ilhasoft.support.validation.sample.databinding.ActivityMainBinding;
1215

1316
public class MainActivity extends AppCompatActivity {
1417

1518
private static final String TAG = "MainActivity";
1619

20+
private ActivityMainBinding binding;
1721
private Validator validator;
1822

1923
@Override
2024
protected void onCreate(Bundle savedInstanceState) {
2125
super.onCreate(savedInstanceState);
2226

23-
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
24-
binding.validate.setOnClickListener(onValidateClickListener);
27+
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
28+
binding.validateName.setOnClickListener(onValidateNameClickListener);
29+
binding.validateMultiple.setOnClickListener(onValidateMultipleClickListener);
30+
binding.validate.setOnClickListener(onValidateAllClickListener);
2531

2632
validator = new Validator(binding);
2733
validator.enableFormValidationMode();
2834
}
2935

30-
private View.OnClickListener onValidateClickListener = new View.OnClickListener() {
36+
private View.OnClickListener onValidateNameClickListener = new View.OnClickListener() {
37+
@Override
38+
public void onClick(View v) {
39+
validator.validate(binding.name);
40+
}
41+
};
42+
43+
private View.OnClickListener onValidateMultipleClickListener = new View.OnClickListener() {
44+
@Override
45+
public void onClick(View v) {
46+
validator.validate(Arrays.asList(binding.username, binding.email));
47+
}
48+
};
49+
50+
51+
private View.OnClickListener onValidateAllClickListener = new View.OnClickListener() {
3152
@Override
3253
public void onClick(View v) {
3354
if (validator.validate()) {

sample/src/main/res/layout/activity_main.xml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
android:layout_height="wrap_content">
2020

2121
<android.support.design.widget.TextInputEditText
22-
android:id="@+id/hello"
22+
android:id="@+id/name"
2323
android:layout_width="match_parent"
2424
android:layout_height="wrap_content"
2525
android:hint="Name"
@@ -31,6 +31,12 @@
3131

3232
</android.support.design.widget.TextInputLayout>
3333

34+
<Button
35+
android:id="@+id/validate_name"
36+
android:layout_width="wrap_content"
37+
android:layout_height="wrap_content"
38+
android:text="Validate name" />
39+
3440
<android.support.design.widget.TextInputLayout
3541
android:layout_width="match_parent"
3642
android:layout_height="wrap_content">
@@ -50,6 +56,7 @@
5056
android:layout_height="wrap_content">
5157

5258
<android.support.design.widget.TextInputEditText
59+
android:id="@+id/email"
5360
android:layout_width="match_parent"
5461
android:layout_height="wrap_content"
5562
android:hint="Email"
@@ -58,6 +65,12 @@
5865

5966
</android.support.design.widget.TextInputLayout>
6067

68+
<Button
69+
android:id="@+id/validate_multiple"
70+
android:layout_width="wrap_content"
71+
android:layout_height="wrap_content"
72+
android:text="Multiple Validation" />
73+
6174
<android.support.design.widget.TextInputLayout
6275
android:layout_width="match_parent"
6376
android:layout_height="wrap_content">
@@ -162,7 +175,8 @@
162175
android:layout_width="wrap_content"
163176
android:layout_height="wrap_content"
164177
android:layout_marginTop="10dp"
165-
android:text="Validate"/>
178+
android:text="Validate All"/>
179+
166180
</LinearLayout>
167181
</ScrollView>
168182
</layout>

sample/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<resources>
2-
<string name="app_name">Support Validation</string>
2+
<string name="app_name">Data Binding Validator Sample</string>
33
<string name="custom_error_username">Custom message: Username not valid</string>
44
<string name="custom_error_password_not_equal">Custom message: passwords are not equals!!</string>
55
<string name="custom_error_cpf">Custom message: CPF is wrong man!</string>

screenshot.png

-38.4 KB
Binary file not shown.

usageSample.gif

680 KB
Loading

0 commit comments

Comments
 (0)