Jak uzyskać tokenizer MultiAutoCompleteTextView podobny do aplikacji Facebook?

Tworzę aplikację, która ma pole „Do”, podobnie jak funkcja „Nowa wiadomość” na Facebooku.

Po wybraniu elementu z listy rozwijanej, tworzę imagepan i dodaję go doMultiAutoCompleteTextView. używałemSpaceTokenizer dla tego widoku. Problem polega na tym, że gdy klikam na backspace, kursor najpierw przenosi się do pustej przestrzeni (tj. Spacji)Tokenizer), a następnie, gdy ponownie klikam na backspace, całe słowo zostaje usunięte ... Chcę usunąć całe słowo po pierwszym kliknięciu Backspace, podobnie jak aplikacja na Facebooku ...

Oto mój kodSpaceTokenizer

     multiContentText.setTokenizer(new Tokenizer(){
     public int findTokenStart(CharSequence text, int      cursor) {
        int i = cursor;
        if(i>0){
            Log.d("textchar ",""+text.charAt(i - 1));
        }

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

        return i;
    }

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

        while (i < len) {
            if (text.charAt(i) == ' ' || text.charAt(i - 1) == '\n') {
                return i;
            } else {
                i++;
            }
        }

        return len;
    }

    public CharSequence terminateToken(CharSequence text) {
        int i = text.length();
        while (i > 0 && text.charAt(i - 1) == ' ' || text.charAt(i - 1) == '\n') {
            i--;
        }

        if (i > 0 && text.charAt(i - 1) == ' ' || text.charAt(i - 1) == '\n') {
            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+" ";
            }
        }
    }
});

Używam tego kodu do utworzeniaTextView w moim multi-ContentText

SpannableStringBuilder ssb = new SpannableStringBuilder(multiContentText.getText());
String c="text from the list";
TextView textView = (TextView) inflater.inflate(R.layout.chips_edittext, null);
textView.setText(c); // set text
int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
textView.measure(spec, spec);
textView.layout(0, 0, textView.getMeasuredWidth(), textView.getMeasuredHeight());
Bitmap b = Bitmap.createBitmap(textView.getWidth(), textView.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(b);
canvas.translate(-textView.getScrollX(), -textView.getScrollY());
textView.draw(canvas);
textView.setDrawingCacheEnabled(true);
Bitmap cacheBmp = textView.getDrawingCache();
Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true); 
textView.destroyDrawingCache();  // destory drawable
// create bitmap drawable for imagespan
BitmapDrawable bmpDrawable = new BitmapDrawable(viewBmp);               
bmpDrawable.setBounds(0, 0,bmpDrawable.getIntrinsicWidth(),bmpDrawable.getIntrinsicHeight());
// create and set imagespan 
ssb.setSpan(new ImageSpan(bmpDrawable),0 ,c.length() , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// set chips span 
multiContentText.setText(ssb);      
multiContentText.setSelection(multiContentText.getText().length());

Nie jestem pewien, czy przestrzeńTokenizer jest właściwą opcją dla tego typu zachowania ... Każda pomoc lub wskazówki będą wdzięczne ...

Oto zrzut ekranu dla lepszego zrozumienia ....

Mam tekst, po którym następuje spacja, a następnie kursor ... Jeśli nacisnę spację, najpierw przenosi się do pustego miejsca i dopiero po ponownym naciśnięciu Backspace cały tekst zostaje usunięty ....

Oto kolejny zrzut ekranu ..

Tutaj kursor nie jest dokładnie między nimiTextVieww przeciwieństwie do aplikacji na Facebooku, która ponownie powoduje pewne problemy z wstawianiem tekstu ...

questionAnswers(3)

yourAnswerToTheQuestion