¿Cómo obtengo el tokenizador MultiAutoCompleteTextView similar a la aplicación de Facebook?

Estoy creando una aplicación que tiene un campo 'Para' como en la función "Mensaje nuevo" de la aplicación de Facebook.

Después de seleccionar un elemento de la lista desplegable, creo un intervalo de imágenes y lo agrego a laMultiAutoCompleteTextView. he utilizadoSpaceTokenizer para esta vista El problema es que cuando hago clic en la tecla de retroceso, el cursor se mueve primero al espacio vacío (es decir, espacioTokenizer) y luego cuando vuelvo a hacer clic en la tecla de retroceso, se borra toda la palabra ... Quiero eliminar toda la palabra en mi primer clic en la tecla de retroceso al igual que la aplicación de Facebook ...

Aquí está mi código paraSpaceTokenizer

     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+" ";
            }
        }
    }
});

Estoy usando este código para crear unTextView en mi 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());

No estoy seguro de si el espacioTokenizer es la opción correcta para este tipo de comportamiento ... Cualquier ayuda o punteros serán agradecidos ...

Aquí está la captura de pantalla para una mejor comprensión ...

Tengo un texto seguido de un espacio y luego un cursor ... Si presiono la tecla de retroceso, primero se moverá al espacio vacío y solo cuando golpee la tecla de retroceso de nuevo, se eliminará todo el texto ...

Aquí está la otra captura de pantalla ..

Aquí el cursor no está exactamente entre los dosTextViewA diferencia de la aplicación de Facebook, que de nuevo causa algunos problemas al insertar el texto ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta