2017-02-15 12 views
0

Mein Problem ist, dass wenn ich Sätze in MultiAutoCompleteTextView vorschlagen, wenn ich die Leertaste drücken, verschwinden die Vorschläge. Beispiel:MultiAutoCompleteTextView akzeptiert keine Leerzeichen

Empfohlene Worten:

THE ROCK
THE BALL
THERMAL

Wenn ich schreibe "THE", werden alle Sätze angezeigt, aber wenn ich „THE schreiben "(mit Leerzeichen) werden die Vorschläge verworfen. Ich möchte, dass wenn Sie "THE" schreiben, die Elemente "THE ROCK" und "THE BALL" in vorgeschlagenen Wörtern angezeigt werden.

Danke.

Antwort

0

Werfen Sie einen Blick auf diesen Beitrag:

https://groups.google.com/forum/#!topic/android-developers/OrsN2xRpDmA Ich lief in ein ähnliches Problem und eine einfache Mehrwort Ableitung geschrieben. Es ist standardmäßig ein "," Trennzeichen, aber Sie können es mit der Methode "setSeparator" beliebig setzen. oder diese Stack-Überlauf Antwort könnte hilfreich sein, weil es das gleiche Problem auftritt: AutoCompleteTextView backed by CursorLoader

+0

Ich sah schon, dass die Post, und es für mich nicht funktioniert – cnbandicoot

0

Sie sollten MultiAutoCompleteTextView.Tokenizer implementieren und einen spaceTokenizer wie unten erstellen. Dann setzen multiAutoCompleteTextView.setTokenizer(new SpaceTokenizer());

public class SpaceTokenizer implements MultiAutoCompleteTextView.Tokenizer { 

public int findTokenStart(CharSequence text, int cursor) { 
    int i = cursor; 

    while (i > 0 && text.charAt(i - 1) != ' ') { 
     i--; 
    } 
    while (i < cursor && text.charAt(i) == ' ') { 
     i++; 
    } 

    return i; 
} 

public int findTokenEnd(CharSequence text, int cursor) { 
    int i = cursor; 
    int len = text.length(); 

    while (i < len) { 
     if (text.charAt(i) == ' ') { 
      return i; 
     } else { 
      i++; 
     } 
    } 

    return len; 
} 

public CharSequence terminateToken(CharSequence text) { 
    int i = text.length(); 

    while (i > 0 && text.charAt(i - 1) == ' ') { 
     i--; 
    } 

    if (i > 0 && text.charAt(i - 1) == ' ') { 
     return text; 
    } else { 
     if (text instanceof Spanned) { 
      SpannableString sp = new SpannableString(text + " "); 
      TextUtils.copySpansFrom((Spanned) text, 0, text.length(), 
        Object.class, sp, 0); 
      return sp; 
     } else { 
      return text + " "; 
     } 
    } 
} 
} 
+0

Ich habe bereits ein 'CustomTokenizer' und funktioniert nicht. Dein 'Tokenizer' funktioniert auch nicht – cnbandicoot

Verwandte Themen