JoeyCK
JoeyCK

Reputation: 1402

Limit EditText to text (A-z) only

I want an editText that only allows text input from A to z, no numbers or other characters. I've found out I have to use InputFilter but I don't understand how this code works.

InputFilter filter = new InputFilter() { 
    public CharSequence filter(CharSequence source, int start, int end, 
Spanned dest, int dstart, int dend) { 
            for (int i = start; i < end; i++) { 
                    if (!Character.isLetterOrDigit(source.charAt(i))) { 
                            return ""; 
                    } 
            } 
            return null; 
     } 
}; 

edit.setFilters(new InputFilter[]{filter}); 

Upvotes: 2

Views: 3849

Answers (2)

Steve Bergamini
Steve Bergamini

Reputation: 14600

The code you posted adds a custom filter to the EditText field. It checks to see if the character entered is not a number or digit and then, if so, returns an empty string "". That code is here:

if (!Character.isLetterOrDigit(source.charAt(i))) { 
                        return ""; 
} 

For your needs, you want to change the code slightly to check if the character is NOT a letter. So, just change the call to the static Character object to use the isLetter() method. That will look like this:

if (!Character.isLetter(source.charAt(i))) { 
                        return ""; 
} 

Now, anything that is not a letter will return an empty string.

Upvotes: 3

Blitz
Blitz

Reputation: 5671

Haven't actually done it, but check Androids NumberKeyListener. You can find the source code for it here: http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/text/method/NumberKeyListener.java.htm

it does exactly the opposite of what you need, but that should be a good enough starting point.

Upvotes: 0

Related Questions