InputFilter clears text

29 Views Asked by At

I'm trying to create and InputFilter that will only let user insert 1 whitespaces and no special characters.

My code can be found here: https://pastebin.com/L0J1Ua23

    @Override
    public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {
    int specialCharacters = 0;

    // Check if what he has inserted has only
    // Letters.
    char c;
    for (int pos = 0; pos < charSequence.length(); pos++) {
        c = charSequence.charAt(pos);
        if (!Character.isLetter(c) && !isAcceptedSpecialChar(c)) {
            return "";
        }
    }


    for (int pos = i; pos < i1; pos++) {
        c = charSequence.charAt(pos);
        if (Character.isWhitespace(c)) {
            ++specialCharacters;
        }
    }

    for (int pos = 0; pos < spanned.length(); pos++) {
        c = spanned.charAt(pos);
        if (Character.isWhitespace(c)) {
            ++specialCharacters;
        }
    }

     return specialCharacters > maxWhitespaces ? "" : null;

}

The problem is that whenever I insert a special character like "@" or "-", my whole text gets deleted. Moreover, for every character that I type, my InputFilter is called 2 times (from the same threads).

The way I attach my InputFilter to my views:

private void setMaxLengthFields() {
    InputFilter[] inputFilters1 = new InputFilter[]{new MaxWhitespacesFilter(1)};

    firstNameView.setFilters(inputFilters1);
    lastNameView.setFilters(inputFilters1);
}

Does anybody else have this problem? Or does anybody know a solution to this problem?

0

There are 0 best solutions below