Thursday, April 12, 2012

Limiting Edit Text to Alphanumeric

Android provides an easy way to edit text fields by modifying the layout xml and adding an android:inputType="text". This lets you easily create some basic validations like numbers, decimal, phone or emails. But there's parameter for no alphanumeric (i.e. no special characters). To do this, you need to user an input filter like below and set the fields you want to validate with that filter in code. This imput filter
      InputFilter alphaNumericFilter = new InputFilter() {   
                @Override  
       public CharSequence filter(CharSequence arg0, int arg1, int arg2, Spanned arg3, int arg4, int arg5)  
       {  
                     for (int k = arg1; k < arg2; k++) {   
           if (!Character.isLetterOrDigit(arg0.charAt(k))) {   
               return "";   
           }   
       }   
                     return null;   
       }   
          };   
     mFirstName.setFilters(new InputFilter[]{ alphaNumericFilter});   
Now how about an email address?
     InputFilter filterEmail = new InputFilter() {   
                  @Override  
         public CharSequence filter(CharSequence arg0, int arg1, int arg2, Spanned arg3, int arg4, int arg5)  
         {  
                       boolean valid=false;  
                       for (int i = arg1; i < arg2; i++) {   
             if (Character.isLetterOrDigit(arg0.charAt(i)) ) {   
                  valid=true;  
             } else if ( arg0.charAt(i)=='@') {  
                  valid=true;  
             } else if     (arg0.charAt(i)=='.') {  
                  valid=true;       
             }  
         }   
                       if (valid) {  
                            return null;  
                       } else {  
                            return "";  
                       }  
         }   
            };