Skip to content

Commit 976942a

Browse files
Using TextInputlayout for validation with CustomText
1 parent 4a3ab7f commit 976942a

File tree

13 files changed

+236
-62
lines changed

13 files changed

+236
-62
lines changed

Validator/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies {
2626
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
2727
exclude group: 'com.android.support', module: 'support-annotations'
2828
})
29-
compile 'com.android.support:appcompat-v7:25.3.1'
29+
compile 'com.android.support:appcompat-v7:25.0.1'
30+
compile 'com.android.support:design:25.0.1'
3031
testCompile 'junit:junit:4.12'
3132
}

Validator/src/main/java/com/harpz/androidvalidator/Validation/Validator.java

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,20 @@
22

33

44
import android.app.Activity;
5+
import android.support.design.widget.TextInputLayout;
6+
import android.widget.CheckBox;
57
import android.widget.EditText;
68

9+
import com.harpz.androidvalidator.Validation.testValidation.CheckedBoxTest;
710
import com.harpz.androidvalidator.Validation.testValidation.EmailTest;
811
import com.harpz.androidvalidator.Validation.testValidation.NameTest;
912
import com.harpz.androidvalidator.Validation.testValidation.PasswordTest;
13+
import com.harpz.androidvalidator.Validation.validatorInterfaces.Checked;
1014
import com.harpz.androidvalidator.Validation.validatorInterfaces.Email;
1115
import com.harpz.androidvalidator.Validation.validatorInterfaces.Name;
1216
import com.harpz.androidvalidator.Validation.validatorInterfaces.Password;
1317

18+
import java.lang.annotation.Annotation;
1419
import java.lang.reflect.Field;
1520

1621

@@ -21,7 +26,7 @@ public class Validator {
2126

2227

2328

24-
public void Validator(Activity activity) {
29+
public void validate(Activity activity) {
2530

2631
Class cl = activity.getClass();
2732

@@ -34,17 +39,35 @@ public void Validator(Activity activity) {
3439

3540
if (fd[i].isAnnotationPresent(Email.class)) {
3641
fd[i].setAccessible(true);
42+
43+
Annotation annotation = fd[i].getAnnotation(Email.class);
44+
Email iEmail = (Email) annotation;
45+
TextInputLayout tvInputLayout = (TextInputLayout) activity.findViewById(iEmail.til());
3746
EditText editText = (EditText) fd[i].get(activity);
38-
new EmailTest().checkValid(editText);
47+
new EmailTest().checkValid(editText,iEmail.message(),tvInputLayout);
3948
}else if(fd[i].isAnnotationPresent(Name.class)){
4049
fd[i].setAccessible(true);
50+
51+
Annotation annotation = fd[i].getAnnotation(Name.class);
52+
Name iName = (Name) annotation;
53+
TextInputLayout tvInputLayout = (TextInputLayout) activity.findViewById(iName.til());
4154
EditText editText = (EditText) fd[i].get(activity);
42-
new NameTest().checkValid(editText);
55+
new NameTest().checkValid(editText,iName.message(),tvInputLayout);
4356
}else if(fd[i].isAnnotationPresent(Password.class)){
4457
fd[i].setAccessible(true);
58+
59+
Annotation annotation = fd[i].getAnnotation(Password.class);
60+
Password iPassword = (Password) annotation;
61+
TextInputLayout tvInputLayout = (TextInputLayout) activity.findViewById(iPassword.til());
4562
EditText editText = (EditText) fd[i].get(activity);
46-
new PasswordTest().checkValid(editText);
47-
}
63+
new PasswordTest().checkValid(editText,iPassword.message(),tvInputLayout);
64+
}else if(fd[i].isAnnotationPresent(Checked.class)){
65+
Annotation annotation = fd[i].getAnnotation(Checked.class);
66+
fd[i].setAccessible(true);
67+
Checked iChecked = (Checked) annotation;
68+
CheckBox checkBox = (CheckBox) fd[i].get(activity);
69+
new CheckedBoxTest().checkValid(checkBox,iChecked.message());
70+
}
4871

4972
} catch (IllegalArgumentException ex) {
5073

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.harpz.androidvalidator.Validation.testValidation;
2+
3+
import android.util.Log;
4+
import android.widget.CheckBox;
5+
6+
7+
8+
public class CheckedBoxTest {
9+
public void checkValid(CheckBox checkBox,String message) {
10+
11+
12+
if(checkBox != null){
13+
14+
if(!checkBox.isChecked()){
15+
16+
Log.i("checkbox",message);
17+
}
18+
19+
}else{
20+
throw new NullPointerException("Validator : Field is null");
21+
22+
}
23+
24+
25+
}
26+
}

Validator/src/main/java/com/harpz/androidvalidator/Validation/testValidation/EmailTest.java

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.harpz.androidvalidator.Validation.testValidation;
22

3+
import android.support.design.widget.TextInputLayout;
34
import android.view.View;
45
import android.widget.EditText;
56

@@ -11,28 +12,53 @@ public class EmailTest {
1112

1213
String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
1314

14-
public void checkValid(final EditText email){
15+
public void checkValid(final EditText email, final String message, final TextInputLayout til){
1516

1617
if(email != null) {
1718

18-
email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
19-
@Override
20-
public void onFocusChange(View v, boolean hasFocus) {
21-
if(!hasFocus){
22-
final String check = email.getText().toString().trim();
23-
24-
if (!emailValidation(check)) {
25-
email.setError("Please Check Your email");
26-
email.requestFocus();
27-
} else {
28-
email.setError(null);
29-
email.setFocusable(false);
19+
if(til != null){
20+
21+
til.setErrorEnabled(false);
22+
email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
23+
@Override
24+
public void onFocusChange(View v, boolean hasFocus) {
25+
if (!hasFocus) {
26+
final String check = email.getText().toString().trim();
27+
28+
if (!emailValidation(check)) {
29+
til.setErrorEnabled(true);
30+
til.setError(message);
31+
} else {
32+
til.setError(null);
33+
til.setErrorEnabled(false);
34+
}
35+
3036
}
37+
}
38+
});
39+
40+
}else {
3141

42+
email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
43+
@Override
44+
public void onFocusChange(View v, boolean hasFocus) {
45+
if (!hasFocus) {
46+
final String check = email.getText().toString().trim();
47+
48+
if (!emailValidation(check)) {
49+
email.setError(message);
50+
} else {
51+
email.setError(null);
52+
}
53+
54+
}
3255
}
33-
}
34-
});
56+
});
57+
}
58+
59+
}else{
3560

61+
throw new NullPointerException("Validator : Field is null");
3662
}
3763

3864
}

Validator/src/main/java/com/harpz/androidvalidator/Validation/testValidation/NameTest.java

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.harpz.androidvalidator.Validation.testValidation;
22

3+
import android.support.design.widget.TextInputLayout;
34
import android.view.View;
45
import android.widget.EditText;
56

@@ -15,28 +16,55 @@ public class NameTest {
1516
String namepattern = "[a-zA-Z ]+";
1617

1718

18-
public void checkValid(final EditText eName){
19+
public void checkValid(final EditText eName, final String message, final TextInputLayout til){
1920

2021
if(eName != null) {
2122

22-
eName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
23-
@Override
24-
public void onFocusChange(View v, boolean hasFocus) {
25-
if(!hasFocus){
26-
final String check = eName.getText().toString().trim();
27-
28-
if (!namevalidation(check)) {
29-
eName.setError("Please enter valid Name.");
30-
eName.requestFocus();
31-
} else {
32-
eName.setError(null);
33-
eName.setFocusable(false);
23+
if(til != null) {
24+
til.setErrorEnabled(false);
25+
eName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
26+
@Override
27+
public void onFocusChange(View v, boolean hasFocus) {
28+
if (!hasFocus) {
29+
final String check = eName.getText().toString().trim();
30+
31+
if (!namevalidation(check)) {
32+
til.setErrorEnabled(true);
33+
til.setError(message);
34+
35+
} else {
36+
til.setErrorEnabled(false);
37+
til.setError(null);
38+
}
39+
3440
}
41+
}
42+
});
43+
44+
}else{
45+
46+
eName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
47+
@Override
48+
public void onFocusChange(View v, boolean hasFocus) {
49+
if (!hasFocus) {
50+
final String check = eName.getText().toString().trim();
3551

52+
if (!namevalidation(check)) {
53+
54+
eName.setError("Please enter valid Name.");
55+
} else {
56+
eName.setError(null);
57+
58+
}
59+
60+
}
3661
}
37-
}
38-
});
62+
});
63+
64+
}
3965

66+
}else{
67+
throw new NullPointerException("Validator : Field is null");
4068
}
4169

4270
}

Validator/src/main/java/com/harpz/androidvalidator/Validation/testValidation/PasswordTest.java

Lines changed: 53 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.harpz.androidvalidator.Validation.testValidation;
22

3+
import android.support.design.widget.TextInputLayout;
34
import android.view.View;
45
import android.widget.EditText;
56

@@ -11,18 +12,59 @@ public class PasswordTest {
1112

1213

1314

14-
public void checkValid(final EditText ePassword){
15+
public void checkValid(final EditText ePassword, final String message, final TextInputLayout til){
1516
if(ePassword != null) {
1617

17-
ePassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
18-
@Override
19-
public void onFocusChange(View v, boolean hasFocus) {
20-
if(!hasFocus){
21-
chkpwd(ePassword);
22-
}
23-
}
24-
});
18+
if(til != null) {
2519

20+
til.setErrorEnabled(false);
21+
ePassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
22+
@Override
23+
public void onFocusChange(View v, boolean hasFocus) {
24+
if (!hasFocus) {
25+
final String check = ePassword.getText().toString().trim();
26+
27+
if(check.isEmpty()){
28+
til.setErrorEnabled(true);
29+
til.setError("Please enter Password.");
30+
31+
32+
}else if(!chkpwd(check)){
33+
til.setErrorEnabled(true);
34+
til.setError("Please enter Password minimum 8 Character");
35+
36+
} else {
37+
til.setErrorEnabled(false);
38+
til.setError(null);
39+
}
40+
41+
}
42+
}
43+
});
44+
45+
}else {
46+
47+
ePassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
48+
@Override
49+
public void onFocusChange(View v, boolean hasFocus) {
50+
if (!hasFocus) {
51+
52+
String check = ePassword.getText().toString().trim();
53+
54+
if(check.isEmpty()) {
55+
ePassword.setError("Please enter Password");
56+
}else if(!chkpwd(ePassword.getText().toString())){
57+
ePassword.setError("Please enter Password minimum 8 Character");
58+
}else {
59+
ePassword.setError(null);
60+
}
61+
}
62+
}
63+
});
64+
}
65+
66+
}else{
67+
throw new NullPointerException("Validator : Field is null");
2668
}
2769

2870

@@ -34,22 +76,13 @@ public void onFocusChange(View v, boolean hasFocus) {
3476

3577

3678

37-
public boolean chkpwd(EditText ePassword) {
38-
39-
if(ePassword.getText().length() == 0){
4079

41-
ePassword.setError("Please enter Password");
42-
ePassword.requestFocus();
43-
return false;
44-
}else if(ePassword.length() <6){
80+
public boolean chkpwd(String sPassword) {
4581

46-
ePassword.setError("Please enter Password minimum 8 Character");
47-
ePassword.requestFocus();
82+
if(sPassword.length() <6){
4883
return false;
4984
}
5085

51-
ePassword.setError(null);
52-
ePassword.setFocusable(false);
5386
return true;
5487
}
5588

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.harpz.androidvalidator.Validation.validatorInterfaces;
2+
3+
4+
public @interface Checked {
5+
6+
String message() default "Please checked the checkbox";
7+
}

Validator/src/main/java/com/harpz/androidvalidator/Validation/validatorInterfaces/Email.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,7 @@
99
@Retention(RetentionPolicy.RUNTIME)
1010
@Target(ElementType.FIELD)
1111
public @interface Email {
12+
13+
String message() default "Please Check your email is not valid";
14+
int til() default -1;
1215
}

Validator/src/main/java/com/harpz/androidvalidator/Validation/validatorInterfaces/Name.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@
99
@Retention(RetentionPolicy.RUNTIME)
1010
@Target(ElementType.FIELD)
1111
public @interface Name{
12+
String message() default "Please enter the valid Name.";
13+
int til() default -1;
1214
}

Validator/src/main/java/com/harpz/androidvalidator/Validation/validatorInterfaces/Password.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@
22

33

44
public @interface Password {
5+
6+
String message() default "Please enter minimum 8 characters.";
7+
int til() default -1;
58
}

0 commit comments

Comments
 (0)