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'
용법EasyValidate3 가지 주해 검증 을 제 공 했 습 니 다.
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
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기