EasyValidate 는 제출 데이터 의 완전 성 을 우아 하 게 검사 합 니 다.
6445 단어 EasyValidate검사 하 다제출 하 다.데이터
일상적인 안 드 로 이 드 개발 에서 우 리 는 로그 인 등록 등 알림 입력 검 사 를 할 때.항상 모양 을 쓰 고 코드 를 쓴다.
그리고 정 보 를 제출 하 는 페이지 를 쓸 때마다 천편일률 적 인 코드 를 만들어 야 한 다 는 것 을 알 게 될 것 입 니 다.그것 은...좀 더 우아 한 실현 방식 이 있 을까요?그래서 저 는 이런 상황 에서 프로젝트 를 만 들 었 습 니 다.다른 곳 에 더 많은 주 의 를 기울 이 고 싶 습 니 다.PS:예 를 들 어 게 으 름 피 우 는 것)
1.코드 를 어떻게 우아 하 게 실현 합 니까?
우아 한 방식 으로 코드 를 쓴다 면,컴 파일 할 때 주석 을 스 캔 하고 처리 하 는 데 사용 되 는 AnnotationProcessor 를 언급 하지 않 을 수 없다.그것 은 우리 가 규칙 적 이 고 반복 적 인 코드 노동 을 처리 하 는 것 을 도 울 수 있다.So,키 가 작고 둥 글 어서 인정 할 수 밖 에 없어 요.이 물건 이 저 에 게 잘 어 울 려 요.그래서 저 는 Butternife 와 결합 하여 제출 전 데이터 의 합 법성 을 검증 하 는 도 구 를 써 서 재 구성 할 프로젝트 에 사 용 했 습 니 다.
2.EasyValidate
사용 방법 은 Project 의 build.gradle 파일 아래 allprojects 에 다음 코드 세 션 을 추가 합 니 다.
allprojects {
repositories {
google()
jcenter()
maven {url "https://dl.bintray.com/liweihua/maven/"}
}
}
그리고 module 의 build.gradle 에 추가 합 니 다.
implementation 'com.eiualee:easyvalidate:1.0.0'
annotationProcessor 'com.eiualee:easyvalidate-compiler:1.0.0'
용법EasyValidate
3 가지 주해 검증 을 제 공 했 습 니 다.①
ValidateNull ( , , toast )
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.FIELD)
public @interface ValidateNull {
int id();// ID
String toast();//
int[] plan() default {Plan.DEFAULT};//
}
② ValidateCheck ( , validateState toast )
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.FIELD)
public @interface ValidateCheck {
int id();// ID
String toast();//
int[] plan() default {Plan.DEFAULT};//
boolean validateState() default false;// ,
}
③ ValidateRegular( )
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.FIELD)
public @interface ValidateRegular {
int id();// ID
String toast();//
int[] plan() default {Plan.DEFAULT};//
String regular();
}
위의 3 중 주 해 를 다 알 고 나 면 우 리 는 즐 거 운 프로 그래 밍 을 시작 할 수 있다.컨트롤 위 에서 이렇게 사용 해 보 세 요.아 닙 니 다.먼저 방법 을 사용 해 야 합 니 다.사용 은Butternife
과 일치 합 니 다.왜냐하면 그것 을 바탕 으로 쓴 것 입 니 다.다음은 초기 화 할 때 사용 할 코드 입 니 다.Activity:
IValidate IVALIDATE = EasyValidate.bind(this);
IVALIDATE.setUnValidateListener(new IValidate.OnViewUnValidateListener() {
// (viewid: View id,toast: )
@Override
public void unValidate(int viewId, String toast) {
ToastUtils.showLongToast(toast);
}
});
EasyVlidate.bind();
방법 을 호출 하고 하나IValidate
를 되 돌려 주 며IValidate
로 실현 합 니 다.인터페이스이 인 터 페 이 스 는 검사 실패 시 리 셋 에 사 용 됩 니 다.실패 할 때 반드시
Toast
내용 이 아 닙 니 다.그 렇 죠?이렇게 하면 확장 하기에 편리 하 다.Fragment
IValidate IVALIDATE = EasyValidate.bind(this, fragmentView);
IVALIDATE.setUnValidateListener(new IValidate.OnViewUnValidateListener() {
// (viewid: View id,toast: )
@Override
public void unValidate(int viewId, String toast) {
ToastUtils.showLongToast(toast);
}
});
Activity 의 사용법 과 차이 가 많 지 않 습 니 다.다만EasyValidate.bind(this, fragmentView);
변화 가 필요 합 니 다.자원 방출
IVALIDATE.unBind();
사용 사항주해 의 사용
@ValidateNull(id = R.id.et_input1, toast = " 1 ")
EditText et_input1;
@ValidateCheck(id = R.id.cb_check. toast = " xxxx ")
CheckBox cb_check;
//18
public static final String REGEX_ID_CARD = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9Xx])$";
@ValidateRegular(id = R.id.et_input3, toast = " 3 18 ", regular = REGEX_ID_CARD, plan = Plan.B)
EditText et_input3;
검증 방법 호출
if(!IVALIDATE.isValidatePass(Plan.DEFAULT)){
//Todo
return;
}
이상 은 바 인 딩 인터페이스,주 해 를 사용 하고 검증 을 시작 하 며 연결 인터페이스 를 풀 어 주 는 절차 입 니 다.간단 하지 않 습 니까?아 참,위 에서 검증 방법 을 호출 하면 하나Plan.DEFAULT
가 있 는데 이게 뭐 하 는 거 죠?이어서 보 세 요.Plan 사용(주석 에서 기본 Plan 은 DEFAULT)
우리 가 개발 하고 있 을 때다음 과 같은 수요 가 있다 고 가정 하면:
① 사용자 가 입력
할 때
비어 있 지 않 으 면 로그 인 인 인 터 페 이 스 를 요청 할 수 있다.
② 사용자 가 입력
할 때
비어 있 지 않 으 면 로그 인 인 인 터 페 이 스 를 요청 할 수 있 습 니 다.그럼 우 리 는 어떻게 해 야 되 지?이번에 플랜 필드 를 사용 할 거 예요.코드 를 보 세 요.
@ValidateNull(id = R.id.et_phoneNo,toast = " ",plan = Plan.A)
EditText et_phoneNo;
@ValidateNull(id = R.id.et_checkNo,toast = " ",plan = Plan.A)
EditText et_checkNo;
@ValidateNull(id = R.id.et_userName,toast = " ",plan = Plan.B)
EditText et_userName;
@ValidateNull(id = R.id.et_pw,toast = " ",plan = Plan.B)
EditText et_pw;
호출 시 플랜 에 각각 전송 하면 됩 니 다.
if(!IVALIDATE.isValidatePass(Plan.A)){
//Todo
return;
}
if(!IVALIDATE.isValidatePass(Plan.B)){
//Todo
return;
}
그럼 내 가 원 하 는 판단 을 이 컨트롤 로 판단 해 야 하 는데 어 떡 하지?
@ValidateNull(id = R.id.et_pw,toast = " ",plan = {Plan.A, Plan.B})
EditText et_pw;
plan = {Plan.A, Plan.B}
이렇게 간단 합 니 다.저 는 계획 A 의 검증 도 참 가 했 고 계획 B 의 검증 도 참 가 했 습 니 다.이제 괜 찮 겠 죠?사용 주의사항
개발 할 때 Butternife 와 함께 사용 해 야 합 니 다.R2 파일 을 만 드 는 것 이 귀 찮 습 니 다.반복 적 으로 바퀴 를 만 드 는 것 은 의미 가 없 으 니까 요.그 렇 죠?결언응...효과 도 는 안 보 낼 게 요.이렇게 하 자.실현 의 원 리 는 대부분 Butternife 에서 유래 한 것 이다.아하 하.이상,이것 은 나의 첫 번 째 블 로그,자신의 힘 든 성과 에 대한 보상 이 라 고 할 수 있 습 니 다...바 이!
GitHub 주소:https://github.com/EiuaLee/EasyValidate
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.