Cómo agregar espacio a la sugerencia de AutoCompleteTextView

Quisiera agregar el espacio cuando el usuario selecciona el texto de las sugerencias auto completas, así que cuando él continúa mecanografiando él comenzará de una nueva palabra.

Intenté hacerlo usando TextWatcher pero consigo IndexOutOfBoundsException .

¿Alguna sugerencia?

Introduzca aquí la descripción de la imagen

El observador de texto que he utilizado es:

  private class AddSpaceTextWatcher implements TextWatcher{ boolean shouldAddSpace = false; @Override public void beforeTextChanged(CharSequence s, int start, int before, int count) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (count - before > 1) // check that the new input is not from the keyboard shouldAddSpace = true; } @Override public void afterTextChanged(Editable editable) { if (shouldAddSpace) { shouldAddSpace = false; mAutoCompleteTextView.setText(" "); } } } 

La excepción que recibo es:

 java.lang.IndexOutOfBoundsException: setSpan (18 ... 18) ends beyond length 1 at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1018) at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:611) at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:607) at android.text.Selection.setSelection(Selection.java:76) at android.text.Selection.setSelection(Selection.java:87) at android.widget.EditText.setSelection(EditText.java:99) at android.widget.SearchView.setQuery(SearchView.java:1465) at android.widget.SearchView.onQueryRefine(SearchView.java:889) at android.widget.SuggestionsAdapter.onClick(SuggestionsAdapter.java:371) at android.view.View.performClick(View.java:4756) at android.view.View$PerformClick.run(View.java:19748) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 

Para seleccionar varios elementos, simplemente puede utilizar MultiAutoCompleteTextView que es una subclase de AutoCompleteTextView construida específicamente para este propósito.

O

Si sólo desea añadir un espacio al final haciendo sólo un elemento seleccionable que pruebe esto:

 public void afterTextChanged(Editable editable) { String text = editable.toString(); if (shouldAddSpace && text.length() > 0 && !text.endsWith(" ")) { editable.append(' '); } } 

Editar:

Una vez que el espacio se anexa, simplemente puede llamar a mAutoCompleteTextView.showDropDown(); Para abrir el menú desplegable de nuevo con el texto actualizado.

No estoy seguro de si esto resolvería su problema, pero mAutoCompleteTextView.setText(" "); Quitaría el texto. Así que haría esto:

 mAutoCompleteTextView.setText(mAutoCompleteTextView.getText().toString() + " "); 
  mAutoCompleteTextView.setText(" "); 

Este código establece el texto de vista de texto como "" – Lo que desea es el texto existente más el espacio.

 mAutoCompleteTextView.setText(mAutoCompleteTextView.getText().append(" ")); 

Prefiero usar "MultiAutoCompleteTextView" para lograr lo que estás tratando de hacer.

 <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="65dp" android:ems="10" > 

En el archivo java:

 private AutoCompleteTextView actv; actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); 

Lista de cuerdas:

  String[] countries = getResources(). getStringArray(R.array.list_of_countries); ArrayAdapter adapter = new ArrayAdapter (this,android.R.layout.simple_list_item_1,countries); actv.setAdapter(adapter); 

Este ejemplo muestra la lista de países que corresponden a la entrada del usuario. Espero que este ejemplo sea de alguna ayuda para su trabajo.

  • SearchManager.getSearchableInfo (getComponentName ()) devuelve null
  • Android ActionBar Personalizar Buscar Ver
  • SearchView es invisible con el parámetro collapseActionView desde la biblioteca de diseño 24.1
  • Cuándo cerrar Cursor utilizado en SimpleCursorAdapter
  • ¿Es posible buscar dentro de Fragmentos?
  • El botón de la barra de acciones no se muestra en la vista de búsqueda de Android
  • Android: getSearchableInfo (getComponentName ()) devolviendo null?
  • Botón del micrófono ActionBar (búsqueda por voz) en SearchView
  • ¿Cómo manejar el evento de clic de sugerencia con SearchView en ActionBar, ContentProvider llamando a webService, devolviendo el cursor?
  • La barra de acciones sólo muestra un elemento junto a la vista de búsqueda
  • Icono de Android SearchView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.